Seite 1 von 1

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

Verfasst: Di 11. Mär 2025, 11:19
von cybermailer84
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.

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

Verfasst: Di 11. Mär 2025, 12:36
von karolus
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.

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

Verfasst: Mi 12. Mär 2025, 21:27
von cybermailer84
Das ist nur auf dem Bild falsch dargestellt. Ich habe es natürlich korrekt geöffnet. Der Screenshot passt nicht ganz...

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

Verfasst: Mi 12. Mär 2025, 23:29
von karolus
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