Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


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

Am 30.12.2019 um 19:34 schrieb Thomas Krumbein:
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


Am 30.12.2019 um 18:42 schrieb Tim Herb:
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




--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.