2012-12-13 29 views
6

Vì vậy, tôi có một vấn đề khó chịu đơn giản mà tôi dường như không thể giải quyết được.So sánh đối tượng.Value = Null không tạo ra kết quả mong đợi

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

Về cơ bản, tôi có hộp không liên kết mà người dùng nhập dữ liệu vào và sau đó nhấn nút. Sau khi CÓ trên xác nhận hộp, dữ liệu trên hộp unbound được sao chép vào hộp bị ràng buộc. Tuy nhiên, nếu người dùng không nhập bất cứ thứ gì, điều đó sẽ tạo ra một trường ràng buộc rỗng có thể làm hỏng nghiêm trọng các truy vấn xuống đường.

Điều đó đang được nói, mã ở trên đơn giản sẽ không hoạt động đối với tôi. Nếu tôi đặt, ví dụ, nếu Me.Bank_Credit.Value = 1 và sau đó chạy nó, 1s được biến thành 2s, như sẽ xảy ra. Nhưng nó đơn giản từ chối làm việc cho Null hoặc thậm chí "".

Tôi chắc chắn rằng có một giải pháp đơn giản cho vấn đề này, tôi không thể hiểu được.

Cảm ơn trước

Trả lời

16

Không có gì là bao giờ bằng Null, thậm chí không một Null. Và không có gì là không bao giờ bằng Null, thậm chí không Null khác.

Khi Bank_Credit Null, biểu thức sau đây sẽ trả lại Null ... không True như bạn mong đợi, hoặc thậm chí False.

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

Đó là lý do tương tự cho kết quả này trong cửa sổ Immediate:

Debug.Print Null = Null 
Null 

Sử dụng IsNull() chức năng.

If IsNull(Me.Bank_Credit.Value) Then 

Ngoài ra, hãy xem chủ đề trợ giúp Nz() để xem liệu nó có hữu ích hay không. Bạn có thể làm điều này, mặc dù nó không thực sự là một sự cải tiến trên IsNull(). Nhưng Nz() có thể rất thuận tiện cho mã VBA khác.

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

Khi nói đến Nulls, '=' không thể được sử dụng như một bộ so sánh (nếu x = Null thì) nhưng vẫn có thể được sử dụng như một lệnh gán (x = Null). –

+0

Aha, đã hoạt động! Được đánh giá cao. – user1706975

4

Câu trả lời của HansUp là đúng, nhưng tôi nghĩ nó có liên quan để thêm rằng có một cấu trúc tương tự cho "Không có gì" về cơ bản là từ khóa VBA cho một đối tượng không quan tâm. Bạn phải sử dụng những câu như

If myRange is Nothing Then 

Bạn sẽ thấy các loại báo cáo trên tất cả các tập tin trợ giúp VBA (và thực sự bằng các ngôn ngữ khác mà có một từ khoá tương tự như sau).

Các vấn đề liên quan