Seite 1 von 1
Variabler Zellinhalt als Adresse für Tabellenblatt
Verfasst: So, 18.09.2016 07:49
von BastiFfo
Hallo in die Runde,
ich hoffe meine Frage wurde nicht schon x-mal gestellt. Ich möchte per Makro bestimmte Werte aus meinem Tabellenblatt "Eingabe" in ein anderes Tabellenblatt übertragen.
Ich habe mehrere Tabellenblätter die nach Firmen benannt sind. In der Zelle A1 des "Eingabe"-Tabellenblattes kann aus den verschiedenen Firmen eine gewählt werden. OO soll nun per Makro in dieser Zelle gucken welche Firma ausgewählt ist und dann automatisch das richtige Tabellenblatt nehmen.
Ich hoffe mir kann jemand helfen.
VG
Re: Variabler Zellinhalt als Adresse für Tabellenblatt
Verfasst: So, 18.09.2016 10:17
von clag
Moin BastiFfo,
also das auslesen eines Textstring aus einer Zelle ist doch so ziemlich die einfachste Aufgabe für ein geschriebenes Makro
Code: Alles auswählen
oCalc = thisComponent
oEingabeTabelle = oCalc.Sheets().getByName("Eingabe")
oAuswahlzelle = oEingabeTabelle.getCellRangeByName("$A$1")
sZielName = oAuswahlzelle.String
oZielTabelle = oCalc.Sheets().getByName(sZielName)
.....
nicht getestet, aber sollte schon passen.
Re: Variabler Zellinhalt als Adresse für Tabellenblatt
Verfasst: So, 18.09.2016 10:32
von F3K Total
Hallo BastiFfo,
nun hat clag dir schon ein Makro geschickt, ich hatte eben Lust dazu und habe etwas umfangreicheres geschrieben:
Code: Alles auswählen
Sub Copy_to_Selected_Sheet
oController = ThisComponent.CurrentController
oSheets = ThisComponent.Sheets
oSheet = oSheets.getbyname("Eingabe")
oInputCell = oSheet.getCellbyposition(0,3)'per Index, beginnt bei 0, entspricht Zelle A4
dValue = oInputCell.Value
olstFirmenauswahl = oSheet.drawpage.Forms.getbyName("FormularFirmenauswahl").getbyName("lstFirmenauswahl")'Listenfeld
sTargetSheetName = olstFirmenauswahl.CurrentValue'Zielblattname
oTargetSheet = oSheets.getByname(sTargetSheetName)'Zielblatt wählen
oTargetRange = oTargetSheet.Columns.Getbyindex(0).queryEmptyCells.getbyindex(0)'Zielzellbereich, Spalte A (Index 0), erster leerer Zellbereich
oTargetCell = oTargetRange.getCellbyPosition(0,0)'leerer Zellbereich, erste leere Zelle
oController.ActiveSheet = oTargetSheet'zum Zielblatt springen
oController.Select(oTargetCell)'Zielzelle selektieren
oTargetCell.Value = dValue'Wert eintragen
wait 1000
oController.ActiveSheet = oSheet'zum Eingabeblatt springen
oController.Select(oInputCell)'Eingabezelle selektieren
End Sub
Es ließt den Zieblattnamen aus einem Listenfeld, nimmt den Wert aus der Eingabezelle, und schreibt ihn ans Ende einer Zielspalte auf dem gewählten Zieltabellenblatt. Dabei wechselt die Ansicht, so dass man dies auch sehen kann.
Anbei eine Beispieldatei.
Gruß R