作者:绿色风
分类:
时间:2022-08-18
浏览:134
楼主 xyh9999 |
Q:如何判断数组是否为空或有没有被初始化? A:
- '在模块开头加以下面一行
- Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long 'API判断数组是否为空或有没有被初始化
- '再定义以下自定义函数
- Function Lqc_IsArrEmpt(ByRef TempArr()) '判断数组是否为空或有没有被初始化
- If SafeArrayGetDim(TempArr) = 0 Then Lqc_IsArrEmpt = True Else Lqc_IsArrEmpt = False
- End Function
另外相关的知识有: 1)可用IsArray(Arr)来判断Arr是否为数组。 2)If IsArray(Arr) Then Erase Arr'当Arr为数组时清空该数组 '原先的数组被清空后IsArray(Arr)为True,Lqc_IsArrEmpt(Arr)为True '当Arr中有元素时IsArray(Arr)为True,Lqc_IsArrEmpt(Arr)为False |
2楼 liuguansky |
记得有个方法是,如果是空,它的上限=下限,还是小于的。
|
3楼 liuguansky |
示例:- Sub Ehp_arr()
- Dim i!
- Dim arr, arr2, arr3
- arr = Array("face", "计费", "Sheet1")
- arr2 = Array("单价", "计费", "表")
- For i = 0 To UBound(arr2)
- arr3 = Filter(arr, arr2(i))
- 'Filter函数返回空数组
- If LBound(arr3) > UBound(arr3) Then
- '通过比较arr的上下界来判断数组是否为空
- MsgBox "数组arr3是一个空数组"
- Else
- MsgBox "数组arr3不是一个空数组"
- End If
- Next
- End Sub
非ET内链接,所以没有发。
|
4楼 xyh9999 |
哈哈,与您的概念不太一样噢,您先用我的方法测测下面的abcd这个数组的情况,再用您的方法测测看,看看有什么不同吧。
- Sub testXX()
- Dim abcd()
- ReDim abcd(1, 2)
- abcd(1, 1) = 1
- MsgBox "第一个显示" & IsArray(abcd) & "|" & Lqc_IsArrEmpt(abcd)
- If IsArray(abcd) Then Erase abcd '把它清空
- MsgBox "第二个显示" & IsArray(abcd) & "|" & Lqc_IsArrEmpt(abcd)
- End Sub
|
5楼 liuguansky |
可能是我们对空数组的定义有区别,等 合理解释吧。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一