Vba 变量数据类型将值0更改为空或空白
我在下面的代码中传递值0Vba 变量数据类型将值0更改为空或空白,vba,excel,ms-word,Vba,Excel,Ms Word,我在下面的代码中传递值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 它不应该进入“错误”代码行。 有人能让我
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
它不应该进入“错误”代码行。
有人能让我知道为什么会这样吗?
为什么变量数据类型将0视为空或空白?
空
等于比较类型的默认值
假设整数
类型为空
将为0
:
MsgBox 0 = Empty ' returns True
MsgBox CInt(Empty) ' returns 0
对于String
类型Empty
将是空字符串“”
:
对于Boolean
类型Empty
将为False
:
MsgBox False = Empty ' returns True
MsgBox CBool(Empty) ' returns False
由于将Dim searchtext用作Variant
,variablesearchtext
可以存储任何类型的值,但是当您将0
分配给变量:searchtext=0
时,类型变为:
并且此类型的
为空
为0
。这就是为什么searchtext=Empty
对searchtext=0
作为变量求值为True
是您的真实代码吗?它按预期对我起作用不,不,抱歉,0中不会有“”。它将是searchtext=0如果它是您的真实代码,它甚至无法编译,因为作为变量
应该是作为变量
对不起@simoco我正在更改代码。它应该是searchtext=0。对于searchtext=“0”,它对我来说也很好,但与searchtext=0不同。你能告诉我为什么吗?非常感谢你@simoco。你使复杂的问题变得容易了。:)
MsgBox False = Empty ' returns True
MsgBox CBool(Empty) ' returns False