Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 不存在变量的默认值_Vba - Fatal编程技术网

Vba 不存在变量的默认值

Vba 不存在变量的默认值,vba,Vba,我在做一个基于VBA excel的项目,在调用变量时输入了一个错误。在尝试调试函数一段时间后,我意识到我引用了一个不存在的变量(因为输入错误),但调试器没有指出问题所在 我试图获取变量的值,结果为空。我试图与变量进行比较,但每次都返回false 我想知道它是否与Boolean默认值有关,默认值为False(如Microsoft针对VB语言所说)?如果是这样的话,为什么打印没有价值 另外,为什么调试器指示没有问题 Sub MySub() 'Print absolutely nothing

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

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

我想知道它是否与
Boolean
默认值有关,默认值为
False
(如Microsoft针对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

如果不声明变量,则假定该变量为variant,并且变量的自然状态为空

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

当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

如果希望弹出错误,请在模块顶部使用
选项Explicit
,或在设置中将其设置为默认值

要将其设置为默认值,请转到
工具
==>
选项
,然后单击
需要变量声明


如果未声明变量,则假定该变量为variant,并且变量的自然状态为空

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

当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

如果希望弹出错误,请在模块顶部使用
选项Explicit
,或在设置中将其设置为默认值

要将其设置为默认值,请转到
工具
==>
选项
,然后单击
需要变量声明


这是一个非常有趣的答案,非常感谢!测试后该变量似乎没有变为“布尔值”,它仍然是Variant/Empty(在某些地方尝试put
Debug.Print Typename(myVariable)
)。但空变量在测试中被评估为false。
选项显式的+10000。另外10000个用于添加VBE设置:
Tools | Options
然后在
Editor
选项卡上选择
Require Variable Declaration
。这将自动在每个代码模块中添加
选项Explicit
,这样您就不必记住手动执行。我建议关闭
自动语法检查
——当您写错一行时,它仍会将其涂成红色,但不会出现一个弹出窗口告诉您这么多。(至少我发现弹出窗口非常烦人。)不应该有
(myVariable)
,括号是不必要的(在某些情况下可能会导致不寻常的结果)。这是一个非常有趣的答案,非常感谢!测试后该变量似乎没有变为“布尔值”,它仍然是Variant/Empty(在某些地方尝试put
Debug.Print Typename(myVariable)
)。但空变量在测试中被评估为false。
选项显式的+10000。另外10000个用于添加VBE设置:
Tools | Options
然后在
Editor
选项卡上选择
Require Variable Declaration
。这将自动在每个代码模块中添加
选项Explicit
,这样您就不必记住手动执行。我建议关闭
自动语法检查
——当您写错一行时,它仍会将其涂成红色,但不会出现一个弹出窗口告诉您这么多。(至少我发现弹出窗口非常烦人。)不应该有
(myVariable)
,括号是不必要的(在某些情况下可能会导致不寻常的结果)