我在下面的代码中传递值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
它不应该进入“错误”代码行。 任何人都可以让我知道为什么会这样吗? 为什么varient数据类型将0视为空或空白?
答案 0 :(得分:5)
Empty
等于比较类型的默认值 。
假设Integer
类型Empty
为0
:
MsgBox 0 = Empty ' returns True
MsgBox CInt(Empty) ' returns 0
String
类型Empty
的将为空字符串""
:
MsgBox "" = Empty ' returns True
MsgBox CStr(Empty) ' returns ""
Boolean
类型Empty
的将是False
:
MsgBox False = Empty ' returns True
MsgBox CBool(Empty) ' returns False
由于您使用的是Dim searchtext As Variant
,因此变量searchtext
可以存储任何类型的值,但是当您将0
分配给变量:searchtext = 0
时,请输入becames {{ 1}}:
此类型的
和Variant / Integer
为Empty
。这就是0
评估searchtext = Empty
True
的原因