VBA检查变量是否为空

fes*_*uid 43 variables vba object is-empty

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

If (not objresult.EOF) Then
  'Some code 
End if
Run Code Online (Sandbox Code Playgroud)

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

  • IsEmpty 功能仅适用于excel细胞
  • objresult.EOF Is Nothing - 回归 Empty
  • objresult.EOF <> null- 也回来Empty!

Oor*_*ang 83

您如何测试取决于Property的DataType:

| 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启动对象浏览器并查找对象来告诉DataType.另一种方法是使用TypeName函数:MsgBox TypeName(obj.Property)

  • 我用未设置的工作表变量尝试了它。只能像这样进行检查:“If ws Is Nothing then” (3认同)

Val*_*spa 18

要检查a Variant是否为Null,您需要执行以下操作:

Isnull(myvar) = True
Run Code Online (Sandbox Code Playgroud)

要么

Not Isnull(myvar)
Run Code Online (Sandbox Code Playgroud)


dea*_*asa 11

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

以下检查对我有用,看看是否有一个实际的0进入单元格:

If CStr(rng.value) = "0" then
    'your code here'
End If
Run Code Online (Sandbox Code Playgroud)