VBA变量/数组默认值

时间:2011-10-02 14:32:26

标签: arrays vba default-value

考虑声明

Dim x As Double
Dim avg(1 To 10) As Double

xavg中有哪些默认值?

通过测试,我想说x初始化为零。 同样,我想说avg中的所有元素都被初始化为零。

但是,我可以编写依赖于此的代码吗?或者默认的初始化值实际上是不确定的?

3 个答案:

答案 0 :(得分:19)

如果指定数据类型但未指定初始值设定项,则Visual Basic会将变量初始化为其数据类型的默认值,对于所有数值类型,该值都为0(零)。

  

运行宏时,所有变量都初始化为一个值。一个   数字变量初始化为零,可变长度字符串为   初始化为零长度字符串(“”),固定长度字符串是   填充ASCII码0.变量变量初始化为   空。 Empty变量在数字上下文中由零表示   和字符串上下文中的零长度字符串(“”)。

Ref

答案 1 :(得分:4)

可以编写隐式依赖于给定数据类型默认值的代码,但这并不意味着你总是应该,因为它不是那么明显你正在做什么,这可能会让下一个阅读你代码的人感到困惑(从那时起,那个人可能就是你了)。

显式为变量分配初始值不会出错。如果您愿意,可以在与声明相同的行上执行此操作:

Dim x As Double: x = 0

当然,它对于数组来说更复杂一些,但通常有一个方便的地方可以在你的代码中进一步初始化它们,无论如何你都会遍历它们。

答案 2 :(得分:2)

是的,您应该能够依赖于在VBA中初始化为0的数字类型,因为这是它们的默认值。

但是,如果它让你担心,并且起始值非常重要,那么我的建议是你只需要为它们显式赋值0(尽管你真的不需要)。