如何在VBA语言中expression“如果值不空”?

如何在VBA语言中expression“如果值不为空”的条件? 这是这样的吗?

"if value is not empty then..." Edit/Delete Message 

使用Not IsEmpty()

例如:

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

这取决于你想testing什么:

  • 对于一个string,你可以使用If strName = vbNullStringIF strName = ""Len(strName) = 0 (最后一个被认为更快)
  • 对于一个对象,你可以使用If myObject is Nothing
  • 对于logging集字段,可以使用If isnull(rs!myField)
  • 对于Excel单元格,可以使用If range("B3") = ""IsEmpty(myRange)

等等…扩展的讨论在这里可用(对于Access,但大部分也适用于Excel)。

为什么不使用内置的Format()函数?

 Dim vTest As Variant vTest = Empty ' or vTest = null or vTest = "" If Format(vTest) = vbNullString Then doSomethingWhenEmpty() Else doSomethingElse() End If 

Format()将捕获空variables以及空variables,并将其转换为string。 我使用它作为零/空validation的东西,并检查是否已经在combobox中select一个项目。

尝试这个:

 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 

从这里采取

我不知道这是你在找什么

 if var<>"" then dosomething 

要么

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

ISEMPTY函数也可以使用

Alexphi的build议很好。 你也可以通过首先创build一个Variant然后将其赋值为Empty来硬编码。 然后做一个如果/然后与可能填充它。 如果它被填满,它不是空的,如果没有,它仍然是空的。 你用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