Bra*_*ain 2 excel vba excel-vba word-vba
我在下面的代码中传递值0
Dim searchtext As Varient
Public Sub xyz_page_load()
searchtext = 0
If searchtext = "" Or searchtext = Empty Then
Debug.Print "Error" 'this line should not execute.
Else
Debug.Print "Good"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
它不应该进入"错误"代码行.任何人都可以让我知道为什么会这样吗?为什么varient数据类型将0视为空或空白?
Empty等于比较类型的默认值.
说Integer类型Empty将是0:
MsgBox 0 = Empty ' returns True
MsgBox CInt(Empty) ' returns 0
Run Code Online (Sandbox Code Playgroud)
对于String类型Empty将是空字符串"":
MsgBox "" = Empty ' returns True
MsgBox CStr(Empty) ' returns ""
Run Code Online (Sandbox Code Playgroud)
对于Boolean类型Empty将是False:
MsgBox False = Empty ' returns True
MsgBox CBool(Empty) ' returns False
Run Code Online (Sandbox Code Playgroud)
由于您正在使用Dim searchtext As Variant,变量searchtext可以存储任何类型的值,但是当您分配0给变量时:searchtext = 0,键入becames Variant / Integer:

而Empty这种类型的0.这就是为什么searchtext = Empty评估为True为searchtext = 0