2010-07-25 138 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