【问题标题】:Checking the size of an empty array [duplicate]检查空数组的大小[重复]
【发布时间】:2012-09-10 16:07:51
【问题描述】:

可能重复:
How do I determine if an array is initialized in VB6?

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

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 语句无法编译。

最好的方法是什么?

【问题讨论】:

标签: vba


【解决方案1】:

您可以使用 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

【讨论】:

  • IsEmpty 不能用于确定数组是否为空(它将始终返回False)。这段代码之所以有效,是因为数组变量是ArrayVar,但代码会检查arrvar 是否为空。如果您修复它并正确调用IsEmpty(ArrayVar),您将在尝试获取空数组的UBound(ArrayVar, 1) 时遇到运行时错误9。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2016-04-23
  • 2016-12-18
相关资源
最近更新 更多