Hallo zusammen,
leider verfüge ich nicht (mehr) über (aktuelle) Programmierkenntnisse und hoffe, ich bin hier im Bereich richtig.
Nach langer Zeit mit Calc will ich nun wieder etwas einsteigen und mit ein paar grundlegenden Dingen beginnen.
In der Vergangenheit hatte ich mir das Gerüst mit der Makroaufzeichnung in Calc gestellt - in der Tabelle gespeichert und dann meine veränderlichen Bereiche aus den Zellen mit den vorhanden Funktionen geholt. Klappt bei den alten Versionen von Calc bis heute alles prima.
Nun muss ich (leider) modifizieren.
Ich habe z.B. meinen Kopierbereich definiert in Zelle $D$80 (z.B. $A$26:$H$28) und mein Ziel in Zelle $D$81 (z.B. $A$100). Da sollen die Inhalte hin - nicht mit Formeln.
Wie bekomme ich meinen Zellinhalt zwischen die Hochkommatas als Value für z.B. args1?
Oder in "quick and dirty" mal einen lauffähige sub ...
Danach sollte ich weiterkommen und wieder rein kommen ... hoffe ich ....
Danke vorab
🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Zellinhalt in ein Argument im Makro verwenden
Re: Zellinhalt in ein Argument im Makro verwenden
Hallo,
na denn mal so quick'n'dirty per Dispatcher:
oder etwas hübscher
na denn mal so quick'n'dirty per Dispatcher:
Code: Alles auswählen
sub Main
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "D80"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
oZelle=ThisComponent.Currentselection
sQuelle=oZelle.String
args1(0).Name = "ToPoint"
args1(0).Value = sQuelle
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
args1(0).Name = "ToPoint"
args1(0).Value = "D81"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
oZelle=ThisComponent.Currentselection
sZiel=oZelle.String
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = sZiel
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVD"
dispatcher.executeDispatch(document, ".uno:.uno:InsertContents", "", 0, args4)
end sub
oder etwas hübscher
Code: Alles auswählen
Sub Main2
'Zugriff auf das Dokument
oDoc=ThisComponent
'Zugriff auf die Tabelle
oTab=oDoc.Sheets.getByName("Tabelle1")
'Auslesen der Bereichsadressen aus den Zellen
sQuelle=oTab.getCellRangeByName("D80").String 'enthält z. B. $A$26:$H$28
sZiel=oTab.getCellRangeByName("D81").String 'enthält z. B. $A$100, also nur die linke obere Ecke
'Auslesen der Daten aus dem Quellbereich
aDaten=oTab.getCellRangeByName(sQuelle).getDataArray
'Zielbereich auf gleiche Größe wie Quellbereich ausdehnen
oZiel=oTab.getCellRangeByName(sZiel).RangeAddress
oZielBereich=oTab.getCellRangeByPosition(oZiel.StartColumn, oZiel.StartRow, oZiel.StartColumn+ubound(aDaten(0)), oZiel.StartRow+ubound(aDaten))
'Schreiben der Daten in den Zielbereich
oZielBereich.setDataArray(aDaten)
End Sub
Gruß,
mikele
mikele
Re: Zellinhalt in ein Argument im Makro verwenden
@ mikele --> Vielen dank - werde mich dann mal ins stille Kämmerlein zurückziehen ... schon erschreckend, was man so vergisst, wenn man es länger nicht benutzt. Ich habe selber zuletzt vor ca. 6 Jahren darin gebastelt ... da fühlt man sich jetzt sofort wieder als Anfänger
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.