我有一个对象,我想在其中检查某些属性是否设置为 false,例如:
If (not objresult.EOF) Then
'Some code
End if
但不知何故,有时objresult.EOF
是Empty
,我该如何检查它?
IsEmpty
函数仅适用于 excel 单元格objresult.EOF Is Nothing
- 返回Empty
objresult.EOF <> null
- 也回来Empty
了!
您如何测试取决于属性的数据类型:
| 类型 | 测试 | 测试2 | 数字(Long、Integer、Double 等)| 如果 obj.Property = 0 那么 | | 布尔(真/假) | If Not obj.Property Then | 如果 obj.Property = False 那么 | 对象 | 如果 obj.Property 什么都没有,那么 | | 字符串 | 如果 obj.Property = "" 那么 | 如果 LenB(obj.Property) = 0 那么 | 变体 | 如果 obj.Property = 空 那么 |
您可以通过按 F2 来启动对象浏览器并查找对象来告诉数据类型。另一种方法是只使用 TypeName 函数:MsgBox TypeName(obj.Property)
要检查 aVariant
是否为 Null,您需要这样做:
Isnull(myvar) = True
或者
Not Isnull(myvar)
对于数字,这很棘手,因为如果数字单元格是empty
VBA 将为其分配默认值 0,因此您的 VBA 代码很难区分输入的零和空白数字单元格之间的区别。
以下检查对我有用,以查看单元格中是否输入了实际的 0:
If CStr(rng.value) = "0" then
'your code here'
End If
我有一个类似的问题,可以在 Access VBA 中合法地分配为 0 的整数。以上解决方案都不适合我。
起初我只使用了一个布尔变量和 IF 语句:
Dim i as integer, bol as boolean
If bol = false then
i = ValueIWantToAssign
bol = True
End If
在我的例子中,我的整数变量赋值在一个 for 循环和另一个 IF 语句中,所以我最终使用了“Exit For”,因为它更简洁。
像这样:
Dim i as integer
ForLoopStart
If ConditionIsMet Then
i = ValueIWantToAssign
Exit For
End If
ForLoopEnd