首页 > 解决方案 > 不存在变量的默认值

问题描述

我正在开发一个基于 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

标签: 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

在此处输入图像描述

在此处输入图像描述


推荐阅读