我想檢查一下excel中的某些單元是否爲空。所以我做了一個比較vbNullString,它工作得很好。但是現在,當單元格包含數字零時,似乎比較結果爲真?怎麼會這樣?範圍(...)。當Value爲數字0時,Value = vbNullString爲true?
感謝意見, 弗洛裏安
我想檢查一下excel中的某些單元是否爲空。所以我做了一個比較vbNullString,它工作得很好。但是現在,當單元格包含數字零時,似乎比較結果爲真?怎麼會這樣?範圍(...)。當Value爲數字0時,Value = vbNullString爲true?
感謝意見, 弗洛裏安
這是因爲如果單元格中包含數字零,然後它不是空。
.Value
對象在Excel中的Range
對象的屬性沒有輸入如果沒有寫入任何內容。換句話說,當單元格包含什麼,它與字符串和數字「空」的價值觀相媲美:
Empty cell value = vbNullString --> True
,因爲從字面上講它的價值是""
Empty cell value = 0 --> True
因爲數字說話它的價值0
...發生這種情況的原因是您仍未鍵入該範圍對象的值,因此在運行時該單元仍被視爲包含Variant
類型(這意味着第e類型沒有定義,所以它就像一個零,如果這是數字,並且如果它是一個字符串,就像一個空字符串)。
但是,當您鍵入0
(或者這是公式的輸出,如=2-2
)時,您將類型「Numeric」分配給該範圍。狀態,細胞就數字這意味着:
是對數值零型(0
)等於一個空字符串? False
數字空類型(0
)是否等於零? True
如果你想零被視爲Null
替代字符串""
(即恆vbNullString
),那麼你應該用數值檢查.Value = 0
豐富你的病情。
'vbNullString'與零長度字符串('「」'')不一樣。 'vbNullString'是一個值爲'0'的字符串。一個零長度的字符串佔用存儲空間(本質上是一個BSTR頭部)。 'vbNullString'實質上只是一個空字符串指針。 – Bond
我試圖將工作單元的格式更改爲例如'0.00',我嘗試重新排列Range-Object的NumberFormat屬性。兩者都沒有成功,當我嘗試使用IsEmpty()或與vbNullString比較時,單元格被檢測爲空。這是因爲即使單元格中有0.00,Range.Value也是空的。該怎麼辦? :( – user3470049
如果你想測試單元格爲空,使用'IsEmpty()'。不要將它與'vbNullString'進行比較。 – Bond
如果你有0進入單元格,那麼'vbNullString'不會返回true。 – brettdj