weixing821
weixing821
采纳率0%
2020-05-20 10:07

vba VBA判断数组被定义但未赋值的方法

大家好。

只是定义了数组,但由于把数组赋值时放到了if语句里,导致可能由于没有符合if语句的情况而没有给数组具体赋值,然后对数组进行其他操作(比如进行数组内数值排序)就会报错。
我想问下,怎么判断通过dim arr()形式定义的数组有没有被赋值?
我在网上查过,有说用isarray,isempty函数的。我实验了下,前真后假,没法判断。后来发现用 (not arr)是否为-1(if (not arr)<>-1 ) 这个方法可以,但具体不是很懂其原理,自己找相关资料又找不到。
因此,哪位大神可以帮忙解释一下数组没有被赋值为啥不是empyt?(not arr)<>-1的原理是什么?

 下面为我试验时简化的代码

Sub ttt()

Dim arr() '是数组,且不为空
Dim arr1

arr1 = Empty

Debug.Print IsArray(arr)
Debug.Print IsEmpty(arr)  “结果为啥为false??”
Debug.Print IsEmpty(arr1)

If (Not arr) <> -1 Then   ‘啥原理???’
    MsgBox "数组被赋值了"
Else
    MsgBox "数组没有被赋值"
End If

End Sub

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

相关推荐