2010-07-25 132 views
35

我有一个对象,并在我想检查,如果一些属性设置为false,如:VBA检查变量为空

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

但不知何故,有时objresult.EOFEmpty,我怎么能检查?

  • IsEmpty函数是Excel单元格仅
  • objresult.EOF Is Nothing - 返回Empty
  • objresult.EOF <> null - 返回Empty以及!
+4

请提供一些实际的代码 - 告诉我们什么类型的对象是'objresult'。而'IsEmpty'并不是专门针对excel单元格的,而是'Variant'变量。 – 2010-07-25 12:21:58

回答

70

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

 
| 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函数:MsgBox TypeName(obj.Property)

15

要检查Variant是空,你需要做的是这样的:

Isnull(myvar) = True 

Not Isnull(myvar) 
10

一个数字,这很棘手,因为如果数字单元格是empty VBA将为其分配一个默认值0,所以很难让您的VBA代码告诉输入的零和空白数字单元格之间的区别。

下列检查工作对我来说,看是否有一个实际的0输入到单元格:

If CStr(rng.value) = "0" then 
    'your code here' 
End If 
+0

您的代码示例是区分0和空的一种很好的解决方法 – Laurent 2015-05-27 14:00:55