1

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?

Community
  • 1
  • 1
Simon
  • 177
  • 5

1 Answers1

0

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?

Jim K
  • 12,824
  • 2
  • 22
  • 51