if语句中的VBA编译错误

时间:2017-07-31 14:39:08

标签: vba precompile

If IsArray(payCsv(pay_id)) = False Then
    'create tempArray
    lc = 0
    Debug.Print "create array"
End If

If IsArray(payCsv(pay_id)) = True Then
    Debug.Print " array exists, we should be able to get ubound"
    lc = UBound(payCsv(0)) - LBound(payCsv(0))
    l = l + 1
End If

我正在使用上面的代码来确定我是否可以在我的2D数组上使用Ubound(即如果创建了第二维,则获取长度(ubound - lbound)。

但是,我收到编译错误,即使条件2为false,也无法识别代码不相关。

我正在测试一个数组,结果是如果我注释掉" lc = UBound(payCsv(0)) - LBound(payCsv(0))"是"创建阵列"。

如果我将此行留在那里,我会收到错误"编译错误 - 预期数组"

这是VBA中的错误吗?

1 个答案:

答案 0 :(得分:3)

如果要访问数组第二维的UBound,格式如下:

If IsArray(payCsv(pay_id)) = False Then
    'create tempArray
    lc = 0
    Debug.Print "create array"
Else
    Debug.Print " array exists, we should be able to get ubound"
    lc = UBound(payCsv, 2) - LBound(payCsv, 2)
    l = l + 1
End If

此功能的MSDN page可能会有所帮助。

当您按原样访问payCSV(0)时,代码假定您希望第一个元素位于payCSV数组的第一维内。

也许您可能想尝试一下?

def foo(num)
   puts(num > 10 ? "Your number is: #{num}" : "Number too small")
end