Makro zum kopieren

Hallo,

ich nutze viel LibreOfficeCalc und ich möchte hierin auch Makros nutzen.
Ich bin auf der Suche nach einer Möglichkeit, dass ich die Zellen, die
kopiert werden sollen in einer Zelle im Tabellenblatt stehen habe.
Hierzu habe ich die Variable oZelle im untenstehenden Makro und diese
soll aus den Bereich von B1 bis B5 den Wert von B2 auslesen. In B2 auf
dem Tabellenblatt steht der Name der Zelle die kopiert werden soll und
die dann in D1 eingefügt werden soll. Beim ausführen des Makros erhalte
ich eine Fehlermeldung. Wie muss ich das Makro anpassen, damit es
funktioniert. Gibt es in LibreOffice eine Möglichkeit, die Zelle die
kopiert werden soll in einer Zelle im Tabellenblatt stehen zu haben. In
VBA gibt es die Möglichkeit mithilfe von Cells, die Zelle anzugeben, aus
der der Wert der Variablen stammt.

sub KopieUndInsertDaten
dim aData()
dim oTab as variant,oBereich as Variant,oZielbereich as Variant
For i = 1 to 1
oTab=thisComponent.sheets(0)
oZelle=ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B1:B5").getCellByPosition(1,1).Value
oBereich=oTab.getCellRangeByName(oZelle)
aData=oBereich.getDataArray()
oZielbereich=oTab.getCellRangeByName("D1")
oZielbereich.setDataArray(aData)
Next i
end sub

Es würde mich freuen, wenn mir hier jemand helfen kann.

Vielen Dank

Gruß

Tim

Hey Tim,

wow... trotz Deiner Beschreibung verstehe ich wohl nicht so richtig, was genau Du willst. Ich versuche es mal in einfachen Worten zusammen zu fassen:

In Deiner Tabelle 1 (sheet(0)) steht in der Zelle B2 zum Beispiel eine Zelladresse wie "d36"?

Nun möchtest Du diese auslesen und in den Zielbereich (bei Dir die Zelle "D1") eintragen?

Nun, das wäre ziemlich einfach. Eine Zelle kann nur einen der drei Typen aufnehmen: Texte (Strings), Werte oder Formeln. Eine Zelladresse wäre immer ein Text ("D36") - also auslesen und der Zeilzelle zuweisen. Fertig.

Den Umweg über einen Datenarray kannst Du dir hier absolut sparen - das würde Dir nur helfen, wenn Du mehrere Werte eines zusammenhängenden Bereiches in einen anderen - wohlgemerkt gleich großen - Bereich kopieren möchtest.

Würde also reichen:

sub KopieUndInsertDaten
dim oTab as variant, oZielzelle as Variant, oQuellZelle as string
For i = 1 to 1 '???
oTab=thisComponent.sheets(0)
oQuellZelle=oTab.getCellRangeByName("B2")
   oCopyZelle=oTab.getCellRangeByName(oQuellZelle.string)
   oZielZelle = oTab.getCellRangeByName("D1")
   REM da der Inhalt wahrscheinlich nicht sicher bekannt ist, verwende Formula - das passt immer
   oZielZell.formula = oCopyZelle.formula
 Next i
end sub

Wahrscheinlich willst Du mit der Schleife über die einzelnen Zellen iterieren - geht natürlich, so würde dann eben statt "B2" dort stehen "B" & i  ...oder so

viele Grüße

Thomas

Hallo,

vielen Dank für die Hilfe. Das Makro funktioniert, nachdem ich die erste
Definition mit oQuellZelle as string weggelassen habe. Zuvor kam eine
Meldung, dass es bereits definiert ist. Aus meiner Sicht ist das ein
sehr hilfreiches Makro. Ist es möglich, dieses Makro im Wiki zu
veröffentlichen, wie soll die Namensnennung sein, wenn es erlaubt wird,
damit es von mehr Leuten genutzt werden kann. Ich kann versuchen zu
erklären für was es genutzt werden kann.

Gruß

Tim