2010-07-25 5 views
35

У меня есть объект, и в нем я чек хочу, если некоторые свойства устанавливается в ложь, как:VBA Проверьте переменная пуста

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

Но как-то, иногда objresult.EOF является Empty, и как я могу проверить его ?

  • IsEmpty функция для клеток первенствовать только
  • objresult.EOF Is Nothing - вернуть Empty
  • objresult.EOF <> null - вернуть Empty, как хорошо!
+4

Просьба предоставить некоторые реальные код - показать нам, какой тип объекта 'objresult'. И 'IsEmpty' не относится к ячейкам excel, это для переменных Variant. –

ответ

70

Как вы тест зависит от ТипДанных отеля:

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

Вы можете сказать DATATYPE, нажав клавишу F2, чтобы запустить обозреватель объектов и поиск объекта. Другим способом было бы просто использовать функцию TypeName: MsgBox TypeName(obj.Property)

15

Чтобы проверить, если Variant является Null, что вам нужно сделать это нравится:

Isnull(myvar) = True 

или

Not Isnull(myvar) 
10

Для ряда, это сложно, потому что если числовая ячейка равна empty, VBA присваивает ей значение по умолчанию 0, поэтому ваш код VBA трудно определить разницу между введенным нулем и пустой числовой ячейкой.

Следующая проверка работал для меня, чтобы видеть, был ли фактический 0 вошел в клетку:

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

Ваш образец кода - отличный способ обхода 0 и пустых – Laurent

Смежные вопросы