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
BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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 nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️