关于IsEmpty函数的问题
我定义了一个动态数组c()和一个variant变量d,两者都是全局变量想写两个if语句用来判断
1、c()是否被ReDim过
2、d有没有被赋值
想用IsEmpty函数来做,代码如下:
If IsEmpty(c()) = False Then
d = c()
Debug.Print "非空"
End If
'中间省略的代码是根据条件为c()添加元素
If IsEmpty(d) = False Then
Debug.Print "非空"
End If
但发现不管什么情况下都是False。
请问应该怎么解决上面两个问题呢?
PS:我想实现的功能是单击按钮后根据窗口上若干个文本框里的数值判断有没有达到告警条件,如果达到的话,就为c()添加一个元素与它对应,然后根据重新定义后的c()来操作相应的控件达到告警的效果。b主要用于保存上一次click事件产生的c(),用来取消上一次告警。因为后面要用到For Each语句 所以一定要判断c()是否是空数组,d有没有被赋值过。
请大家帮我看看,谢谢了!!
--------------------编程问答--------------------
Option Explicit--------------------编程问答-------------------- IsEmpty 函数
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long 'API判断数组为空或没有初始化
Dim B() As Variant
Dim IniArray As Long '判断数组B()是否初始化
Private Sub Command1_Click()
'ReDim B(10)
IniArray = SafeArrayGetDim(B)
Debug.Print IniArray '为0表示数组B没有初始化,非0表示已初始化。
End Sub
返回 Boolean 值,指出变量是否已经初始化。
语法
IsEmpty(expression)
必要的 expression 参数是一个 Variant,包含一个数值或字符串表达式。但是,因为 IsEmpty 被用来确定个别变量是否已初始化,所以 expression 参数通常是单一变量名。
说明
如果变量未初始化或已明确设置为 Empty,则 IsEmpty 返回 True;否则返回 False。如果 expression 含有多个变量,则 IsEmpty 总是返回 False。IsEmpty 只返回对 variant 表达式有意义的信息。
这是MSDN上关于IsEmpty的说明,应该说是你多它的使用有误。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 非常感谢两位的帮助,用SafeArrayGetDim处理数组,用IsEmpty处理variant变量成功了。
SafeArrayGetDim函数以前也试过,因为单位电脑是win7的,运行程序提示找不到dll接口点什么的 就放弃了。等明天上班再去试试看。
补充:VB , 基础类