VB-真正完美的判断是否为空数组

2020-10-28  本文已影响0人  神梦无痕

标题: VB 真正完美的判断是否为空数组(就是没有数组成员的意思)
作者: 神梦无痕(email:smwh@vip.qq.com)
链接: https://www.jianshu.com/p/d5a510be7112
版权: 本人所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议。


    Dim ArrErr()

    Debug.Print "【ArrErr() 的数组下标】:" & UBound(ArrErr)



    Dim Arr()

    ReDim Arr(-1 To -1) '有了这句话就不会弹出错误了

    '没有数组成员,就返回 -1

    Debug.Print "【Arr() 的数组下标】:" & UBound(Arr)


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

上一篇下一篇

猜你喜欢

热点阅读