不存在变量的默认值

时间:2018-09-14 14:32:47

标签: vba

我正在研究一个基于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

1 个答案:

答案 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

enter image description here

如果要弹出错误,请使用模块顶部的Option Explicit或在设置中将其设置为默认值。

要将其设置为默认值,请转到Tools ==> Options,然后单击Require Variable Declaration

enter image description here

enter image description here