对象-VBA检查变量是否为空

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

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

但是以某种方式,有时objresult.EOF <> nullEmpty,如何检查?

  • objresult.EOF <> null函数仅适用于Excel单元格
  • objresult.EOF <> null-返回Empty
  • objresult.EOF <> null-也返回Empty
fessguid asked 2020-08-01T17:07:29Z
4个解决方案
83 votes

测试方式取决于属性的数据类型:

| 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)

Oorang answered 2020-08-01T17:07:53Z
18 votes

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

Isnull(myvar) = True

要么

Not Isnull(myvar)
Valentin Despa answered 2020-08-01T17:08:18Z
11 votes

对于数字,这很棘手,因为如果数字单元格为empty,则VBA会为其分配默认值0,因此您的VBA代码很难分辨输入的零和空白数字单元格之间的差异。

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

If CStr(rng.value) = "0" then
    'your code here'
End If
deasa answered 2020-08-01T17:08:44Z
0 votes

我在Access VBA中可能会为整数合理分配0时遇到类似的问题。 以上解决方案均不适合我。

首先,我只是使用了布尔var和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
Galanor answered 2020-08-01T17:09:17Z
translate from https://stackoverflow.com:/questions/3329110/vba-check-if-variable-is-empty