优秀的编程知识分享平台

网站首页 > 技术文章 正文

VBA如何判断数组是空值,这个难题告诉你怎么解决

nanyue 2024-12-17 15:31:15 技术文章 5 ℃

数组在VBA编程中是一项很重要的内容,掌握和学习是一个最基本的环节。

如果对数组运用得当,那么将对数据表格操作有一个很大的帮助作用。

但是vba操作当中,对于数组的判定有一个缺点,无法用相关的函数或方法来判断一个数组是否已经定义,只能判断一个变量是不是数组,函数:isArray即是此功能。

下面就利用一个API函数来进行判断处理,如下图所示:

API指定为Windows系统,其它系统不适用。

这个函数Windows系统自带的文件内部,所以,如果系统文件没有缺失,完全可以正常使用。

具体代码如下图所示:

如果一个数组已经定义或赋值用如下代码判断:

Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
Private Sub CommandButton1_Click()
Dim arr()
ReDim arr(0 To 10)
arr = Array(1, 2, 3, 4, 5)
MsgBox SafeArrayGetDim(arr)
If SafeArrayGetDim(arr) = 0 Then '如果值为0表示数组为空或没有初始化
    MsgBox "Null: 没有初始化数组"
Else
    MsgBox "isTrue 数组已经定义或有值存在!"
    MsgBox Join(arr)
End If
End Sub

如果一个数组初始化或未赋值用如下代码判断:

Private Sub CommandButton2_Click()
Dim arr()
MsgBox SafeArrayGetDim(arr)
If SafeArrayGetDim(arr) = 0 Then '如果值为0表示数组为空或没有初始化
    MsgBox "Null: 没有初始化数组"
Else
    MsgBox "isTrue 数组已经定义或有值存在!"
    MsgBox Join(arr)
End If
End Sub

判断一个变量是不是数组类型:

Dim arr
MsgBox VBA.IsArray(arr) 'arr 不是数组类型
Dim arr()
MsgBox VBA.IsArray(arr) 'arr 是数组类型

数组是一个十分有用的类型,所以在编程过程中将不可避免用到,在此有必要将这些内容进行整理或收藏,以备查询使用。

欢迎关注、收藏

---END---

最近发表
标签列表