这个问题在这里已经有了答案:




8年前关闭。






我最初声明一个数组为空:

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) as 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

10-08 01:53