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
解决方案
如果不声明变量,则假定它是变体,变体的自然状态为空。
实际上第一行是在立即窗口中打印一个空行,因为它是空的。
当你第一次使用它时,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
推荐阅读
- r - 如果不做应该做的事
- deep-learning - 我正在尝试使用 DeepSpeed(Microsoft 的训练优化库)训练图形注意神经网络,但无法理解错误?
- mapbox - 如何使用 map.addLayer 绘制水的轮廓?
- apache-spark - Spark 在 SPARK_LOCAL_DIR 上创建的余额文件
- optimization - 解决 Drake 中 Snopt 的错误,如何解决?
- javascript - Paypal 按钮错误:“预期要传递的订单 ID”
- python - 如何计算链A(CZ)原子的受体特定原子与链B上的原子列表之间的距离
- python - 在 /catalog/borrowed/ 配置不当
- c# - 如何从指定索引连接数组中的值?
- java - java for循环提前终止