Variabler Zellinhalt als Adresse für Tabellenblatt

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

BastiFfo
Beiträge: 1
Registriert: So, 18.09.2016 06:29

Variabler Zellinhalt als Adresse für Tabellenblatt

Beitrag 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
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Variabler Zellinhalt als Adresse für Tabellenblatt

Beitrag 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.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Variabler Zellinhalt als Adresse für Tabellenblatt

Beitrag 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
Dateianhänge
CopyToSelectedSheet.ods
(11.91 KiB) 73-mal heruntergeladen
Antworten