Как мне выразить «если значение не пустое» на языке VBA?

38

Как выразить условие "если значение не пусто" на языке VBA? Это что-то вроде этого?

"if value is not empty then..."
Edit/Delete Message
  • 8
    Я вызываю Джоэла Спольски!
  • 2
    Стоит отметить, что это что-то вроде нулевого значения в других основных языках. Значение emtpy НЕ является пустой строкой (например: "") ...
Показать ещё 1 комментарий
Теги:
excel-vba

6 ответов

53

Используйте Not IsEmpty().

Например:

Sub DoStuffIfNotEmpty()
    If Not IsEmpty(ActiveCell.Value) Then
        MsgBox "I'm not empty!"
    End If
End Sub
20

Это зависит от того, что вы хотите проверить:

  • для строки, вы можете использовать If strName = vbNullString или IF strName = "" или Len(strName) = 0 (последний, предположительно, быстрее)
  • для объекта, вы можете использовать If myObject is Nothing
  • для поля набора записей, вы можете использовать If isnull(rs!myField)
  • для ячейки Excel, вы можете использовать If range("B3") = "" или IsEmpty(myRange)

Etc... Расширенное обсуждение доступно здесь (для Access, но большая часть его работает и для Excel).

4

Почему бы просто не использовать встроенную функцию Format()?

Dim vTest As Variant
vTest = Empty ' or vTest = null or vTest = ""

If Format(vTest) = vbNullString Then
    doSomethingWhenEmpty() 
Else
   doSomethingElse() 
End If

Формат() будет ловить пустые варианты, а также пустые и преобразовывать их в строки. Я использую его для таких вещей, как null/empty validations и проверяет, был ли элемент выбран в выпадающем списке.

3

Попробуйте следующее:

If Len(vValue & vbNullString) > 0 Then
  ' we have a non-Null and non-empty String value
  doSomething()
Else
  ' We have a Null or empty string value
  doSomethingElse()
End If
2

Я не уверен, что это то, что вы ищете

if var<>"" then
           dosomething

или

if isempty(thisworkbook.sheets("sheet1").range("a1").value)= false then

также можно использовать функцию ISEMPTY

0

Предложение Alexphi хорошее. Вы также можете жестко закодировать это, сначала создав переменную как Variant, а затем присвоив ее Empty. Затем выполните if/then, чтобы, возможно, заполнить его. Если он заполняется, он не пуст, если он этого не делает, он остается пустым. Затем вы проверяете это с помощью IsEmpty.

Sub TestforEmpty()

    Dim dt As Variant
    dt = Empty

    Dim today As Date
    today = Date
    If today = Date Then
        dt = today
    End If

    If IsEmpty(dt) Then
        MsgBox "It not is today"
    Else
        MsgBox "It is today"
    End If

End Sub

Ещё вопросы

Сообщество Overcoder
Наверх
Меню