类型不匹配:数组或用户定义的类型,尝试将数组传递给子

时间:2018-01-12 12:44:15

标签: excel vba excel-vba

我有一个数组和一个我试图使用的displayArray子。但是,我得到了一个

  

类型不匹配:数组或用户定义类型预期错误

主要分:

Dim someArray() As Double
someArray = getBinsArray(sumLossesColl)
displayArray (someArray)

displayArray sub:

Sub displayArray(someArray() As Double)
    Dim i As Long


    With ThisWorkbook.Worksheets("Sheet1")
        .Range(.Cells(1, 1), .Cells(1, UBound(someArray) - LBound(someArray))).value = someArray
    End With
End Sub

' getBinsArray'功能:

Function getBinsArray(dataArray() As Double)
    Dim binsNumber As Long
    Dim binSize As Double

    binsNumber = Round(VBA.Sqr(UBound(dataArray) - LBound(dataArray)) + 0.5)
    MsgBox ("binsNumber: " & binsNumber)

    binSize = (getMaxValue(dataArray) - getMinValue(dataArray)) / (binsNumber - 1)

    Dim resultArray() As Double
    ReDim resultArray(1 To bindsNumber) As Double
    resultArray(1) = getMinValue(dataArray)

    Dim i As Long
    For i = 2 To binsNumber
        resultArray(i) = resultArray(i - 1) + binSize
    Next


    getBinsArray = resultArray
End Function

这背后的原因是什么?类型是Double,一切似乎都很好。如何解决?

1 个答案:

答案 0 :(得分:1)

更改为使用以下两种方式之一调用displayArray

call displayArray (someArray)
displayArray someArray

因此要么使用'Call'并将参数放在括号中,要么省略括号。有无穷无尽的讨论使用哪个版本,但最后这是一个品味问题。