Seite 1 von 1

Re: Laufzeitfehler

Verfasst: Mi, 27.10.2010 23:42
von turtle47
Hallo Max,

hilft nach dem ersten Durchlauf

Code: Alles auswählen

redim args1()
zu setzen?

Jürgen

Re: Laufzeitfehler

Verfasst: Do, 28.10.2010 17:17
von DPunch
Aloha

Code: Alles auswählen

redim args1(0)
Das kann bei bei einem Array aus PropertyValues nicht funktionieren.
Das ReDim erzeugt in diesem Fall ein Objekt-Array mit der angegebenen Größe, ohne dabei die gewünschten Objekte auch direkt zu erstellen (Struct com.sun.star.beans.PropertyValue).
Daher muss der Aufruf im nächsten Schleifendurchlauf

Code: Alles auswählen

args1(0).Name = "ToPoint"
args1(0).Value = A(ind)
auch scheitern, die Objekte in args1 sind keine ProperyValue-Structs mehr und kennen daher auch die Attribute "Name" und "Value" nicht.
Die einzige Möglichkeit, ein Array aus Property Values neu zu dimensionieren ist der Einsatz von "Preserve". Aber das brauchst Du vom Blick auf Deinen Code überhaupt nicht.
Du deklarierst Deine args-Arrays innerhalb der Schleife neu, das führt zu den Fehlern (und erklärt, warum es im ersten Durchlauf keinen Fehler gibt).
Stell die Deklarationen mal vor die Schleife:

Code: Alles auswählen

Sub
ind=0
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
A = Array("$I$43:$K$73","$I$74:$K$101","$I102:$K$132","$I$133:$K$162","$I$163:$K$193")
B = Array("$N$46:$P$46","$Q$46:$S$46","$T$46:$V$46","$W$46:$Y$46","$Z$46:$AB$46")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
dim args4(5) as new com.sun.star.beans.PropertyValue
'(....)
while ind < 4
args1(0).Value = A(ind)
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
args3(0).Value = B(ind)
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
'(...)
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())
ind=ind + 1
wend
end sub