VBA - 获取数组长度时无效的限定符

时间:2014-10-29 20:36:57

标签: vba excel-vba excel

我正在尝试创建一个将param放入数组的函数,然后返回数组的随机索引值。我的代码在compile error: invalid qualifier获得arr.Length。到目前为止,我有:

Function myFunction(List As Range)
    Dim arr()
    Dim indx

    arr = List
    indx = (Int(Rnd()) * arr.Length)   'error here

    myFunction = indx
End Function

不确定我是否正确使用数组,或者正确返回值 - 请帮助

修订1

用ubound和lbound替换.length - 现在我在单元格中应该返回数组的索引值时出现#VALUE错误。

Function myFunction(List as Range)

    Dim arr()
    Dim indx as Integer

    arr = List
    indx = Int(Rnd() * (UBound(arr) - LBound(arr) + 1)) 'indx

    myFunction = arr(indx)
End Function

1 个答案:

答案 0 :(得分:0)

将数组的值分配给数组时,会得到尺寸为(1 to numberOfRows, 1 to numberOfCols)的二维数组,因此解决方法是将arr(indx)更改为

Function myFunction(List as Range)

    Dim arr()
    Dim indx as Integer

    arr = List
    indx = Int(Rnd() * (UBound(arr) - LBound(arr) + 1)) 'indx

    myFunction = arr(indx,1)
End Function