考虑声明
Dim x As Double
Dim avg(1 To 10) As Double
x
和avg
中有哪些默认值?
通过测试,我想说x
初始化为零。
同样,我想说avg
中的所有元素都被初始化为零。
但是,我可以编写依赖于此的代码吗?或者默认的初始化值实际上是不确定的?
答案 0 :(得分:19)
如果指定数据类型但未指定初始值设定项,则Visual Basic会将变量初始化为其数据类型的默认值,对于所有数值类型,该值都为0(零)。
运行宏时,所有变量都初始化为一个值。一个 数字变量初始化为零,可变长度字符串为 初始化为零长度字符串(“”),固定长度字符串是 填充ASCII码0.变量变量初始化为 空。 Empty变量在数字上下文中由零表示 和字符串上下文中的零长度字符串(“”)。
答案 1 :(得分:4)
你可以编写隐式依赖于给定数据类型默认值的代码,但这并不意味着你总是应该,因为它不是那么明显你正在做什么,这可能会让下一个阅读你代码的人感到困惑(从那时起,那个人可能就是你了)。
显式为变量分配初始值不会出错。如果您愿意,可以在与声明相同的行上执行此操作:
Dim x As Double: x = 0
当然,它对于数组来说更复杂一些,但通常有一个方便的地方可以在你的代码中进一步初始化它们,无论如何你都会遍历它们。
答案 2 :(得分:2)
是的,您应该能够依赖于在VBA中初始化为0的数字类型,因为这是它们的默认值。
但是,如果它让你担心,并且起始值非常重要,那么我的建议是你只需要为它们显式赋值0(尽管你真的不需要)。