Zellinhalte in andere Tabelle umspeichern

Hallo,
habe mal wieder ein Problem: Ich möchte nach bestimmten Regeln einzelne Zellinhalte in eine andere Tabelle übernehmen. Habe das ganze mit Makrorekorder hinbekommen. Leider wird das Script über 7000 Zeilen lang und deshalb habe ich versucht, es mit einem Unterprogrammen “Umspeichern” zu lösen mit Variablen QuellZelle, ZielZelle. siehe Beispiel. Leider meldet mir der Dispatcher “Argument ist nicht optional” Offenbar kann ich den"Value" nicht indirekt adressieren. Ist das so oder ist das ein Bug von LO7.03.1 und welche alternative Lösung gibt es?
Vielen Dank für eure Hilfe.

sub Umspeichern(QuZelle,ZielZelle)

rem ----------------------------------------------------------------------
dim args21(0) as new com.sun.star.beans.PropertyValue
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args21(0).Name = "Nr"
args21(0).Value = 5

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args21())

rem ----------------------------------------------------------------------
dim args22(0) as new com.sun.star.beans.PropertyValue
args22(0).Name = "ToPoint"
args22(0).Value = QuZelle  <-----------  Der Übeltäter

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

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



Sub Makro1

Call Umspeichern("$A$2","$A$3")
Call Umspeichern("$B$4","$B$3")
Call Umspeichern("$B$5","$C$3")
Call Umspeichern("$B$6","$D$3")
Call Umspeichern("$B$16","$E$3")
Call Umspeichern("$D$10","$F$3")
Call Umspeichern("$D$11","$G$3")
Call Umspeichern("$D$12","$H$3")
Call Umspeichern("$D$16","$I$3")
Call Abschluss("$D$16")



End sub

Hallo,

bitte benutze zur Lesbarkeit von Programmcode die Möglichkeit einen Text als

vorformatierten Text

zu formatieren (Einfach Programmcode markieren und auf das Icon mit den Nullen-und-Einsen klicken). Ich habe Deine Frage editiert und das jetzt mal gemacht. Vielleicht magst Du beim nächsten mal dran denken. Danke im Voraus.

args22(0).Value = QuZelle <----------- Der Übeltäter

Das ist nicht der Übertäter, sondern Du rufst offensichtlich Umspeichern direkt auf (Aufpassen in welchem Makro beim Testen der Cursor ist). Dabei ist natürlich nichts belegt und Du bekommst den Fehler. Ruf das Makro Makro1 auf (versichere Dich, dass der Cursor in Maklro1 ist) und Du bekommt keinen Fehler. Das nur zu Fehlermeldung.


Du präsentierst zudem hier Code, der so gar ich funktionieren kann, da dem `Sub Umspeichern()` schlicht ein `End Sub` fehlt.
Da das nun Deine zweite Frage zum Thema Makro ist, gehe ich davon aus, dass Du Dich näher damit beschäftigen willst. Daher rate ich Dir, den Makrorecorder so schnell wie möglich zu vergessen. Damit kommt man in den seltensten Fällen zu brauchbaren Makros (und das hier funktioniert in der vorliegenden Form auch nicht - wobei ich aber mal davon ausgehe, dass es nicht alles ist, was in der *Makroaufzeichnung* enthalten ist.)

Sorry, ich hatte nur einen Teil des Codes weitergegeben, er schließt natürlich mit End Sub ab. Ich war auch sicher, den Test mit Makro1 gestartet zu haben, aber offensichtlich war es nicht so, den nun funktioniert es ohne Änderung.

Vielen Dank für das Öffnen meiner Augen.

Ich ziehe die Frage zurück!