VBA Check if variable is empty
我有一个对象,在其中我想检查一些属性是否设置为假,比如:
1 2 3 | If (not objresult.EOF) Then 'Some code End if |
但不知怎么的,有时候
IsEmpty 函数仅用于Excel单元格objresult.EOF Is Nothing —返回Empty 。objresult.EOF <> null —也返回Empty !
测试方式取决于属性的数据类型:
1 2 3 4 5 6 | | Type | Test | Test2 | Numeric (Long, Integer, Double etc.) | If obj.Property = 0 Then | | Boolen (True/False) | If Not obj.Property Then | If obj.Property = False Then | Object | If obj.Property Is Nothing Then | | String | If obj.Property ="" Then | If LenB(obj.Property) = 0 Then | Variant | If obj.Property = Empty Then | |
通过按F2启动对象浏览器并查找对象,可以判断数据类型。另一种方法是只使用typename函数:
要检查EDOCX1[1]是否为空,您需要这样做:
1 | Isnull(myvar) = True |
或
1 | Not Isnull(myvar) |
对于一个数字来说,这是很困难的,因为如果一个数字单元格是
下面的检查对我有效,以查看是否在单元格中输入了实际的0:
1 2 3 | If CStr(rng.value) ="0" then 'your code here' End If |
我有一个类似的问题,一个整数可以在AccessVBA中合法地分配为0。以上所有的解决方案都不适合我。
起初,我只是使用了一个布尔变量和if语句:
1 2 3 4 5 | Dim i as integer, bol as boolean If bol = false then i = ValueIWantToAssign bol = True End If |
在我的例子中,我的整型变量赋值是在一个for循环和另一个if语句中进行的,所以我最后使用了"exit for",因为它更简洁。
像这样:
1 2 3 4 5 6 7 | Dim i as integer ForLoopStart If ConditionIsMet Then i = ValueIWantToAssign Exit For End If ForLoopEnd |