2012-12-13 137 views
6

所以我有一個令人沮喪的簡單問題,我似乎無法解決。比較object.Value =空不會產生預期的結果

If Me.Bank_Credit.Value = Null Then 
Me.Bank_Credit.Value = 0 
End If 

基本上,我有一個未綁定的框,用戶輸入數據,然後點擊按鈕。確認框爲YES後,將未綁定框中的數據複製到綁定框中。但是,如果用戶沒有輸入任何內容,則反過來會創建一個空白的綁定字段,這會嚴重影響查詢的順利進行。

這就是說,上述代碼根本不適用於我。例如,如果我設置了,如果Me.Bank_Credit.Value = 1,然後運行它,那麼1會變成2秒,應該會發生。但它只是拒絕爲Null甚至「」工作。

我很確定這個問題有一個簡單的解決方案,我只是無法弄清楚。

在此先感謝

回答

16

什麼都不等於空,甚至沒有一個空。而且沒有任何東西不等於空,甚至沒有空。

Bank_Credit空,下面的表達式將返回null ...不是True如你所料,甚至False

Debug.Print (Me.Bank_Credit.Value = Null) 

這是同樣的原因導致立即窗口:

Debug.Print Null = Null 
Null 

使用IsNull()功能。

If IsNull(Me.Bank_Credit.Value) Then 

而且,看看Nz()幫助主題,看看它是否是有用的。你可以做到這一點,雖然它不是一個超過IsNull()的改進。但是Nz()對於其他VBA代碼可以非常方便。

Me.Bank_Credit = Nz(Me.Bank_Credit, 0) 
+4

說到空值時,'='不能用作比較器(如果x = Null,那麼)仍然可以用作賦值指令(x = Null)。 –

+0

阿哈,工作! 非常感謝。 – user1706975

4

HansUp的答案是正確的,但我認爲它有關補充一點,有一個類似的結構爲「無」,這基本上是一個解除引用的對象一個VBA關鍵字。你必須使用語句像

If myRange is Nothing Then 

你會(在有一個關鍵字與此類似其他語言和實際)看到這些語句排序遍佈VBA幫助文件。

相關問題