Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 变量数据类型将值0更改为空或空白_Vba_Excel_Ms Word - Fatal编程技术网

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

Vba 变量数据类型将值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 它不应该进入“错误”代码行。 有人能让我

我在下面的代码中传递值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
它不应该进入“错误”代码行。 有人能让我知道为什么会这样吗?
为什么变量数据类型将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
,variable
searchtext
可以存储任何类型的值,但是当您将
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