变体数据类型将值0更改为空或空白

时间:2014-04-01 09:37:49

标签: vba excel-vba word-vba excel

我在下面的代码中传递值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视为空或空白?

1 个答案:

答案 0 :(得分:5)

Empty等于比较类型的默认值

假设Integer类型Empty0

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}}:

enter image description here

此类型的

Variant / IntegerEmpty。这就是0评估searchtext = Empty

True的原因