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