标题:
VB 真正完美的判断是否为空数组(就是没有数组成员的意思)
作者:神梦无痕(email:smwh@vip.qq.com)
链接: https://www.jianshu.com/p/d5a510be7112
版权:本人所有文章,都遵守“
署名-非商业性使用-相同方式共享 2.5 中国大陆”协议。
- 1)我首先想到的是用
UBound
来判断(很可惜,会弹出错误“下标越界”)
Dim ArrErr()
Debug.Print "【ArrErr() 的数组下标】:" & UBound(ArrErr)
- 2)无意间我看到有人说,数组的范围,可以是负数,我立马想到了解决方法
Dim Arr()
ReDim Arr(-1 To -1) '有了这句话就不会弹出错误了
'没有数组成员,就返回 -1
Debug.Print "【Arr() 的数组下标】:" & UBound(Arr)
- 3)完整的 VB 例子如下:
Private Sub Form_Load()
'*==============================================================================
'*
'* 标题: VB 真正完美的判断是否为空数组(就是没有数组成员的意思)
'* 作者: 神梦无痕(email:smwh@vip.qq.com)
'* 链接: https://www.jianshu.com/p/d5a510be7112
'* 版权: 本人的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
'* (https://creativecommons.org/licenses/by-nc-sa/2.5/cn/)
'*==============================================================================
'
' 1)我首先想到的是用 UBound 来判断(很可惜,会弹出错误“下标越界”)
' Dim ArrErr()
' Debug.Print "【ArrErr() 的数组下标】:" & UBound(ArrErr)
' 2)无意间我看到有人说,数组的区间,可以是负数,
' 我立马想到了解决方法,空数组的下标用 -1 表示
'
'
'----------定义了数组型变量----------
Dim Arr() As String '可以指定类型,也可以不指定
'利用这句话,来保证不会弹出错误
ReDim Arr(-1 To -1)
'测试获取数组下标(没有报错了),空数组返回 -1
Debug.Print "【Arr() 的数组下标】:" & UBound(Arr)
'给数组动态赋值
ReDim Preserve Arr(-1 To UBound(Arr) + 1): Arr(UBound(Arr)) = "作者:"
ReDim Preserve Arr(-1 To UBound(Arr) + 1): Arr(UBound(Arr)) = " 神梦无痕"
ReDim Preserve Arr(-1 To UBound(Arr) + 1): Arr(UBound(Arr)) = "QQ:"
ReDim Preserve Arr(-1 To UBound(Arr) + 1): Arr(UBound(Arr)) = " 1042207232"
For i = 0 To UBound(Arr)
Debug.Print "【" & i & "】" & Arr(i)
Next
Debug.Print "【Arr() 的数组下标】:" & UBound(Arr)
Debug.Print
'----------未定义成数组型变量----------
Dim ABC '这种不指定数据类型更好
ABC = Array() '利用 Array 创建的数组就不会弹出错误
'空数组返回 -1
Debug.Print "【ABC 的数组下标】:" & UBound(ABC)
'给数组动态赋值
ReDim Preserve ABC(UBound(ABC) + 1): ABC(UBound(ABC)) = "作者:"
ReDim Preserve ABC(UBound(ABC) + 1): ABC(UBound(ABC)) = " 神梦无痕"
ReDim Preserve ABC(UBound(ABC) + 1): ABC(UBound(ABC)) = "QQ:"
ReDim Preserve ABC(UBound(ABC) + 1): ABC(UBound(ABC)) = " 1042207232"
For i = 0 To UBound(ABC)
Debug.Print "【" & i & "】" & ABC(i)
Next
Debug.Print "【ABC 的数组下标】:" & UBound(ABC)
End Sub
网友评论