52

我有一个对象,我想在其中检查某些属性是否设置为 false,例如:

If (not objresult.EOF) Then
  'Some code 
End if

但不知何故,有时objresult.EOFEmpty,我该如何检查它?

  • IsEmpty函数仅适用于 excel 单元格
  • objresult.EOF Is Nothing- 返回Empty
  • objresult.EOF <> null- 也回来Empty了!
4

4 回答 4

106

您如何测试取决于属性的数据类型:

| 类型 | 测试 | 测试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)

于 2010-07-25T22:13:32.250 回答
21

要检查 aVariant是否为 Null,您需要这样做:

Isnull(myvar) = True

或者

Not Isnull(myvar)
于 2013-12-11T11:33:59.723 回答
13

对于数字,这很棘手,因为如果数字单元格是emptyVBA 将为其分配默认值 0,因此您的 VBA 代码很难区分输入的零和空白数字单元格之间的区别。

以下检查对我有用,以查看单元格中是否输入了实际的 0:

If CStr(rng.value) = "0" then
    'your code here'
End If
于 2015-05-20T14:53:29.033 回答
-2

我有一个类似的问题,可以在 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
于 2019-04-07T11:19:30.563 回答