Vba 检查空数组的大小
可能重复:Vba 检查空数组的大小,vba,Vba,可能重复: 我最初将数组声明为空: Dim ArrayVar() as Variant 'May add some data, may not if something then Redim Preserve ArrayVar(ubound(ArrayVar,1)+1) ArrayVar(ubound(ArrayVar,1)) = "something" end if 'Always check size of array if ubound(ArrayVar,1)
我最初将数组声明为空:
Dim ArrayVar() as Variant
'May add some data, may not
if something then
Redim Preserve ArrayVar(ubound(ArrayVar,1)+1)
ArrayVar(ubound(ArrayVar,1)) = "something"
end if
'Always check size of array
if ubound(ArrayVar,1) > x
问题是,有时当我检查大小时,没有添加任何内容-数组为空,并且我得到一个运行时错误。我确实尝试将带有Dim ArrayVar(0)的数组声明为Variant
,但随后无法编译redim语句
最好的方法是什么?您可以使用IsEmpty()函数
请尝试以下代码:
Dim ArrayVar() As Variant
Sub x()
If IsEmpty(arrvar) Then
ReDim ArrayVar(0)
Else
ReDim Preserve ArrayVar(UBound(ArrayVar, 1) + 1)
ArrayVar(UBound(ArrayVar, 1)) = "something"
End If
MsgBox UBound(ArrayVar, 1)
End Sub
这将回答YRU q Nope,说“下标超出范围”,这也将有助于@Ачаааааааааааааааааааа。此代码之所以有效,是因为数组变量为
ArrayVar
,但代码会检查arrvar
是否为空。如果修复它并正确调用IsEmpty(ArrayVar)
,则在尝试获取空数组的UBound(ArrayVar,1)
时将出现运行时错误9。