我正在研究一个基于VBA excel的项目,并在调用变量时输入错误。尝试调试该功能一段时间后,我意识到我正在引用一个不存在的变量(由于输入错误),但是调试器并未指出问题所在。
我试图获取变量的值,结果为空。我试图与该变量进行比较,并且每次都返回false。
我想知道它是否与Boolean
默认值False
有关(如Microsoft所说的VB语言here)?如果是这种情况,为什么不打印任何值?
此外,为什么调试器没有显示问题?
Sub MySub()
'Print absolutely nothing
Debug.Print myVariable
If (myVariable) Then
Debug.Print "Condition is true"
Else
'The condition always comes in that
Debug.Print "Condition is false"
End If
End Sub
答案 0 :(得分:7)
如果不声明变量,则假定它是变量,并且变量的自然状态为空。
实际上,由于第一行是空的,因此第一行正在立即窗口中打印空白行。
当您第一次使用VBA时,VBA假定您想将其用作布尔值,因此它将变为布尔值,并且布尔值的基值或空值为False。
Sub MySub()
Debug.Print myVariable 'Prints and empty line As the variable is Empty Variant
If (myVariable) Then 'Treated as a Boolean with value False empty = false
Debug.Print "Condition is true"
Else
'This fires as base boolean value is False
Debug.Print "Condition is false"
End If
End Sub
如果要弹出错误,请使用模块顶部的Option Explicit
或在设置中将其设置为默认值。
要将其设置为默认值,请转到Tools
==> Options
,然后单击Require Variable Declaration