3

我在这里问过这样做的好方法。

现在我正在尝试在此处找到的以下代码,并得到一些意外错误。

我想我没有以正确的方式使用它。任何想法 ?

Sub Main 
    Dim aResult 
    Dim aFunc 
    Dim oRange 

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

    aResult = aFunc.callFunction("SUM", Array(1, 2, 3))
    ' ---- Works OK
    Print aResult 

    aResult = aFunc.callFunction("MDETERM", Array(2, 5, 8)) 
    ' ---- IllegalArgumentException
    Print aResult 

    oRange = ThisComponent.sheets(0).getcellrangebyname("B4:B6") 
    aResult = aFunc.callFunction("ZTEST", Array(oRange, 2.5, 1.0)) 
    ' ---- IllegalArgumentException
    Print aResult 
End Sub
4

1 回答 1

3

MDETERM需要一个方阵。

并且ZTEST仅当范围内有值时才有效。

Sub Main 

    Dim oFunc as Object
    Dim vResult as Variant
    Dim oRange as Object
    Dim bDoZTEST as Boolean
    Dim aSubArray as Variant
    Dim vValue as Variant

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

    vResult = oFunc.callFunction("SUM", Array(1, 2, 3))
    Print vResult 

    vResult = oFunc.callFunction("MDETERM", Array(Array(Array(2, 5, 8), Array(1, 4, 3), Array(9, 7, 6)))) 
    Print vResult 

    oRange = ThisComponent.sheets(0).getCellRangeByName("B4:B6") 
    bDoZTEST = true
    vResult = Empty
    for each aSubArray in oRange.DataArray
     for each vValue in aSubArray
      if not isNumeric(vValue) then bDoZTEST = false
     next
    next
    if bDoZTEST then vResult = oFunc.callFunction("ZTEST", Array(oRange, 2.5, 1.0)) 
    Print vResult 

End Sub
于 2015-05-14T05:25:11.570 回答