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。