如何在 VBA 语言中表达“如果值不为空”?

如何在 VBA 语言中表达“如果值不为空”的条件?

"if value is not empty then..."
Edit/Delete Message
681682 次浏览

试试这个:

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 的建议很好。您还可以通过先创建一个变量作为 Variant,然后将其分配给 Empty来硬编码它。然后执行 if/Then with 来可能填充它。如果它被填满,它就不是空的,如果它不被填满,它就是空的。然后用 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

这取决于你想测试什么:

  • 对于字符串,您可以使用 If strName = vbNullStringIF strName = ""Len(strName) = 0(最后一个应该更快)
  • 对于对象,可以使用 If myObject is Nothing
  • 对于记录集字段,可以使用 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 ()将捕获空变量和空变量,并将它们转换为字符串。 我使用它来进行 null/null 验证,以及检查组合框中是否选择了某个项。

使用 Not IsEmpty()

例如:

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

我认为解决这个问题比我们想象的要容易得多。我只是简单地使用了表达式 Not Null,它工作得很好。

Browser("micclass").Page("micclass").WebElement("Test").CheckProperty "innertext", Not Null

可以在 for 循环中使用 inputbox函数:

Sub fillEmptyCells()
Dim r As Range
Set r = Selection
For i = 1 To r.Rows.Count
For j = 1 To r.Columns.Count
If Cells(i, j).Value = "" Then
Cells(i, j).Select
Cells(i, j).Value = InputBox( _
"set value of cell at column " & Cells(1, j).Value & _
" and row " & Cells(i, 1))
End If
Next j
Next i
End Sub