2011-12-15 42 views
24

我已經使用以下VBA代碼:VBA(Excel)中= Empty和IsEmpty()之間的區別是什麼?

Do While .Cell(i,1) <> Empty 
    ' doing things 
    i = i+1 
Loop 

通過列迭代(雙/整數值)在Excel中。然後,我發現一個案例,當單元格的值爲0時,測試評估結果爲False。我不知道這種情況與正常情況之間有什麼區別。

如果我改變了測試:

Do While Not IsEmpty(.Cell(i,1)) 
    .. 
Loop 

它工作正常。所以我的問題是:如何評估IsEmpty()和= Empty之間的區別?在什麼情況下將=值爲0的單元格評估爲True?

+2

`範圍( 「A2」)= 0``?範圍( 「A2」)= Empty```TRUE`?爲IsEmpty(範圍( 「A2」 ))``False`我想看一個0`= Empty`的單元格值返回False的情況! – 2011-12-15 16:37:50

+0

你說得對。我現在看到,我之前看過的系列不包含零(我只是假設他們做過),所以行爲是一致的。 – Christian 2011-12-16 09:46:52

回答

26

Empty指變量被在其默認值。所以如果你檢查一個值爲0的單元格= Empty那麼它會返回true。

IsEmpty指的是沒有值被初始化。

簡而言之,如果您想查看某個單元格是否爲空(因爲其值不存在),請使用IsEmpty。如果您想查看當前是否有默認值,請使用Empty

-4

相信的IsEmpty只是方法,該方法的細胞返回值,並檢查其是否爲空,因此: 的IsEmpty(。細胞(I,1))那樣 - >

​​
+0

@Christian`Not IsEmpty(Sheets(「Results」)。Cells(i,1))`你是否想過在你的邏輯中「Not」? – 2011-12-15 15:38:34

+0

不幸的是,我的系統不能這樣。當我做 `儘管不是空的(表格(「結果」)。單元格(i,1)) 表格(「結果」)。單元格(i,2)。值=(表格(「結果」)。單元格(i,1)<>空) 循環體# 我得到一個相鄰的布爾值列,其中0對應於False,而其他值對應於True。 – Christian 2011-12-15 15:38:50

4

從幫助:
的IsEmpty返回true如果變量未初始化或顯式設置爲;否則,它返回False。如果表達式包含多個變量,則總是返回False。
IsEmpty僅返回變量的有意義的信息。

要檢查單元格是否爲空,可以使用cell(x,y) = ""
你最終可能會通過使用Range("X:Y").SpecialCells(xlCellTypeBlanks)xlCellTypeConstantsxlCellTypeFormulas節省時間

相關問題