🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro? Inhalt kopieren und einfügen wenn Bedingung erfüllt

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
cybermailer84
Beiträge: 2
Registriert: Di 11. Mär 2025, 11:05

Makro? Inhalt kopieren und einfügen wenn Bedingung erfüllt

Beitrag von cybermailer84 » Di 11. Mär 2025, 11:19

Ich komm grad nicht weiter, habe versucht mittels Aufzeichnung ein Makro zu definieren.
Jedoch wird das Makro dann immer für die aufgezeichnete Zeile angewendet und nicht für die Auswahl.

Ich habe ca. 30000 Zeilen und ich muss diese nachbearbeiten.

So sieht die Datenquelle aus:
Bild

Programmablauf:
Wenn in der Zelle D der jeweiligen Zeile der Inhalt "1.8.0" gefunden.
Mache eine Leerzeile genau darunter.
Kopiere die darüberliegende Zeile und füge sie in diese Leerzeile ein.
Bearbeite die gerade eingefügte Zeile wie folgt:
Inhalt Zelle D anpassen von "1.8.0" zu "1.8.1"
Inhalt von Zelle E berechnen
Wert von E darüberliegend minus Wert von E darunterliegend bspw.

So hätte meine Aufzeichnung ausgesehen:

Code: Alles auswählen

sub BerechnungKomplett
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRowsBefore", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$2:$E$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$D$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "StringName"
args7(0).Value = "'1.8.1"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "StringName"
args9(0).Value = "=E2-E4-E5-E6"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args9())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub
Danke.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro? Inhalt kopieren und einfügen wenn Bedingung erfüllt

Beitrag von karolus » Di 11. Mär 2025, 12:36

Hallo

Zuerst solltest du wohl deine Datenquelle nochmal neu importieren, und darauf achten das Spalte E korrekt mit Komma als Dezimaltrenner anstatt als Tausendertrennzeichen benutzt wird.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

cybermailer84
Beiträge: 2
Registriert: Di 11. Mär 2025, 11:05

Re: Makro? Inhalt kopieren und einfügen wenn Bedingung erfüllt

Beitrag von cybermailer84 » Mi 12. Mär 2025, 21:27

Das ist nur auf dem Bild falsch dargestellt. Ich habe es natürlich korrekt geöffnet. Der Screenshot passt nicht ganz...

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro? Inhalt kopieren und einfügen wenn Bedingung erfüllt

Beitrag von karolus » Mi 12. Mär 2025, 23:29

cybermailer84 hat geschrieben:
Mi 12. Mär 2025, 21:27
Das ist nur auf dem Bild falsch dargestellt. Ich habe es natürlich korrekt geöffnet. Der Screenshot passt nicht ganz...
Quatsch, auf dem Screenshot sind nur »Kommazahlen« mit 2 oder 4 oder 5 Nachkommastellen zu sehen und die wurden als Text interpretiert (links ausgerichtet)
Die rechts ausgerichteten Zahlen ohne Komma waren wohl vor dem Import Zahlen mit drei Kommastellen
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


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.



Antworten