总是使用显式选项
在 VBA 编辑器窗口中,从工具菜单中选择选项:
然后在编辑器选项卡中,确保选中需要变量声明:
选择此选项将自动将 Option Explicit
置于每个 VBA 模块的顶部。
小注意: 这对于目前尚未打开的模块,类模块等是正确的。因此,如果你在激活需求变量声明选项之前已经查看了例如
Sheet1
的代码,则不会添加Option Explicit
!
Option Explicit
要求在使用前必须定义每个变量,例如使用 Dim
语句。如果没有启用 Option Explicit
,VBA 编译器将假定任何未识别的单词为 Variant
类型的新变量,从而导致与打印错误相关的极难发现的错误。启用 Option Explicit
后,任何无法识别的单词都会导致抛出编译错误,表示有问题的行。
示例:
如果你运行以下代码:
Sub Test()
my_variable = 12
MsgBox "My Variable is : " & myvariable
End Sub
你将收到以下消息:
你通过编写 myvariable
而不是 my_variable
来表示错误,然后消息框显示一个空变量。如果你使用 Option Explicit
,则无法执行此错误,因为你将收到指示问题的编译错误消息。
现在,如果你添加正确的声明:
Sub Test()
Dim my_variable As Integer
my_variable = 12
MsgBox "My Variable is : " & myvariable
End Sub
你将获得一条错误消息,指出 myvariable
的错误:
关于 Option Explicit 和 Arrays ( 声明动态数组 )的注意事项 :
你可以使用 ReDim 语句在过程中隐式声明数组。
使用 ReDim 语句时,请注意不要拼错数组的名称
即使模块中包含 Option Explicit 语句,也会创建一个新数组
Dim
arr()as Long
ReDim
ar()'creates new array "ar" - "ReDim
ar()" acts like "Dim
ar()"