I am trying to call the IRR function from a LibreOffice basic macro, but get an
Illegal Argument Exception
Function Bla()
Dim oFunc as Object
oFunc = createunoservice("com.sun.star.sheet.FunctionAccess")
Dim args(1) as Variant
args(0) = Array(3300, -1000, -2000)
args(1) = 0.1
Dim vResult as Variant
vResult = oFunc.callFunction("IRR", args)
Print vResult
End Function
What is the correct way to call the function?
Apparently, such functions expect a two-dimensional array.
Sub CallIRR()
Dim oFunc As Object
oFunc = createUnoService("com.sun.star.sheet.FunctionAccess")
Dim args(1) As Variant
args(0) = Array(Array(3300, -1000, -2000))
args(1) = 0.1
Dim vResult As Variant
vResult = oFunc.callFunction("IRR", args)
Print vResult
End Sub
To figure this out, I played around with the Java example at https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Function_Handling#Calculating_Function_Results.
EDIT:
A similar question is at How to use LibreOffice functions into Basic?