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中的错误吗?
答案 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