如何判断数组已经初始化

VBA编程中经常用到数组,在代码中使用数组之前,需要确保数组已经完成初始化操作,借助API可以进行判断。

Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
Sub Demo()
    Dim strArray1() As String
    Dim strArray2() As String
    Dim strArray3(1 To 3) As String
    Dim strArray4(1 To 3) As Integer
    
    Debug.Print "strArray1 - " & IIf(SafeArrayGetDim(strArray1) > 0, "已初始化", "未初始化")
    Debug.Print "strArray2 - " & IIf(SafeArrayGetDim(strArray2) > 0, "已初始化", "未初始化")
    Debug.Print "strArray3 - " & IIf(SafeArrayGetDim(strArray3) > 0, "已初始化", "未初始化")
    Debug.Print "strArray4 - " & IIf(SafeArrayGetDim(strArray4) > 0, "已初始化", "未初始化")
    
    strArray1 = Split("1,2,3", ",")
    ReDim strArray2(1 To 3)
    Debug.Print "==============="
    Debug.Print "strArray1 - " & IIf(SafeArrayGetDim(strArray1) > 0, "已初始化", "未初始化")
    Debug.Print "strArray2 - " & IIf(SafeArrayGetDim(strArray2) > 0, "已初始化", "未初始化")
End Sub
代码解析:

执行完DIM语句后,四个数组的状态是否相同呢?来看一下VBE中【本地窗口】。
在这里插入图片描述
Dim strArray1() As String声明的数组,其类型为String(),“值”为空,这样的数组尚未进行初始化无法使用。
strArray3和strArray4则已经完成初始化,根据数组的数据类型,数组元素具备相应的初始值,String数组strArray3初始值为空字符,Integer数组strArray4初始值为0,在代码中可以访问其元素的值或者进行赋值等操作。
除了DIM语句之外,第13行和第14行代码也可以实现数组初始化。代码执行后,【立即窗口】如下图所示。

在这里插入图片描述

利用API函数SafeArrayGetDim可以判断数组是否已经完成初始化,代码运行结果如下。

strArray1 - 未初始化
strArray2 - 未初始化
strArray3 - 已初始化
strArray4 - 已初始化
===============
strArray1 - 已初始化
strArray2 - 已初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值