Seite 1 von 1

Parameterübergabe in Makros

Verfasst: Mi, 09.10.2013 23:29
von Werner Holtfreter
Hallo,

ich möchte in einem Makro für LO3.6.2.2 Linux, mit dem eine Funktion definiert wird, der Calc-internen Funktion "IRR" ein Array übergeben. Das funktioniert, wenn man das Array in einer Hilfstabelle übergibt. "oBereich" ist z.B. "A1:A7"

Code: Alles auswählen

oFunktion = GetProcessServiceManager().createInstance("com.sun.star.sheet.FunctionAccess")

IRRX = oFunktion.callFunction("IRR", Array(oBereich))
Die Hilfstabelle würde ich gern einsparen und das Array "wert" direkt übergeben, wie hier erfolgreich mit SUM getestet:

Code: Alles auswählen

IRRX = oFunktion.callFunction("SUM", wert)
Ersetzt man SUM durch IRR, führt das zum Laufzeitfehler. Wie macht man es besser?

(Ein gleichlautendes Posting in de.comp.office-pakete.staroffice.misc blieb bisher ohne Antwort.)

Re: Parameterübergabe in Makros

Verfasst: Do, 10.10.2013 10:27
von balu
Hallo Werner,

das 'englische' IRR ist gleich das 'deutsche' IKV. Auch wenn der zweite Parameter optional ist, so muss er mit angegeben werden. Mit anderen Worten; So wie Du denkst funktioniert der Aufruf nicht, er muss noch erweitert werden.

Der Code müsste dann ungefähr so aussehen

Code: Alles auswählen

Sub Func
oFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
Dim args( 1 ) As Variant
   args(0) = oBereich

   args(1) = '?? Hier muss der Optionale Parameter eingetragen werden. Vielleicht reicht ja einfach eine Null 0.

result = oFunctionAccess.callFunction( "IRR", args() )

msgbox result

end sub
Versuchs mal. Ich habs jetzt nicht getestet.



Gruß
balu

Re: Parameterübergabe in Makros

Verfasst: Do, 10.10.2013 22:33
von Werner Holtfreter
Hallo balu,

danke für deinen Vorschlag. Leider benutzt du "oBereich", der auf auf die Hilfstabelle verweist, die ich ja einsparen will. Ich habe deshalb folgende Abwandlung probiert, aber in der Zeile mit "result" tritt wieder der Fehler auf:

Code: Alles auswählen

oFunktion = createUnoService("com.sun.star.sheet.FunctionAccess")
args(0) = wert()
args(1) = 0
result = oFunktion.callFunction("IRR", args() )