2010-07-25 54 views
35

tôi có một đối tượng và bên trong nó tôi séc muốn nếu một số thuộc tính được thiết lập để sai, như:VBA Kiểm tra xem biến là trống

If (not objresult.EOF) Then 
    'Some code 
End if 

Nhưng bằng cách nào đó, đôi khi objresult.EOFEmpty, và làm thế nào tôi có thể kiểm tra xem nó ?

  • IsEmpty chức năng là cho tế bào excel chỉ
  • objresult.EOF Is Nothing - trở Empty
  • objresult.EOF <> null - trở Empty cũng!
+4

Vui lòng cung cấp một số mã thực - hiển thị chúng tôi biết loại đối tượng là 'objresult'. Và 'IsEmpty' không dành riêng cho các ô excel, nó là cho các biến' Biến thể '. –

Trả lời

70

Làm thế nào bạn thử phụ thuộc vào DataType của tài sản:

 
| 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 | 

Bạn có thể nói với DataType bằng cách nhấn F2 để khởi động Object Browser và nhìn lên các đối tượng. Một cách khác là nên chỉ sử dụng chức năng TypeName: MsgBox TypeName(obj.Property)

15

Để kiểm tra xem một Variant là Null, bạn cần phải làm điều đó thích:

Isnull(myvar) = True 

hoặc

Not Isnull(myvar) 
10

Đối với một số, nó là khôn lanh bởi vì nếu một ô số là empty VBA sẽ gán giá trị mặc định là 0 cho nó, do đó rất khó cho mã VBA của bạn để cho biết sự khác biệt giữa số 0 đã nhập và ô số trống.

Vui lòng cung sau làm việc cho tôi để xem nếu có một thực tế 0 nhập vào tế bào:

If CStr(rng.value) = "0" then 
    'your code here' 
End If 
+0

Mẫu mã của bạn là giải pháp tuyệt vời để phân biệt 0 và trống – Laurent

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