非现有变量的默认值

Tea*_*sel 1 vba

我正在开发一个基于VBA excel的项目,并在调用变量时输入错误.在尝试调试函数一段时间后,我意识到我正在引用一个不存在的变量(因为错字)但调试器没有指出问题.

我试图获取变量的值,结果为空.我试图与变量进行比较,每次都返回false.

我想知道,如果它有什么做的Boolean是默认值False(作为VB语言说,微软在这里)?如果是这样的话,为什么打印没有价值呢?

另外,为什么调试器没有问题?

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
Run Code Online (Sandbox Code Playgroud)

Sco*_*ner 7

如果您未声明变量,则假定它是变量,变量的自然状态为Empty.

实际上第一行是在立即窗口中打印一个空行,因为它是空的.

首次使用时,因为你有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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

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

在此输入图像描述

在此输入图像描述

  • + Option显式为+10000.另外10000个用于添加VBE设置:`Tools | 选项`然后在`Editor`选项卡上选择`Require Variable Declaration`.这将_automatically_在_every_代码模块中放置`Option Explicit`,这样你就不必记得手工完成. (2认同)