excel-vba 始终使用“ Option Explicit”
示例
在“VBA编辑器”窗口中,从“工具”菜单中选择“选项”:
然后,在“编辑器”选项卡中,确保选中“需要变量声明”:
选择此选项将自动置于OptionExplicit每个VBA模块的顶部。
小提示:到目前为止尚未打开的模块,类模块等都是如此。因此,如果您已经看过例如Sheet1在激活选项“需要变量声明”之前的代码,OptionExplicit则不会添加!
OptionExplicit要求必须在使用之前定义每个变量,例如,使用Dim语句。如果未OptionExplicit启用,则VBA编译器会将任何无法识别的单词视为该Variant类型的新变量,从而导致与印刷错误有关的极难发现的错误。与OptionExplicit启用,未确认的话会导致抛出一个编译错误,表示有问题的行。
范例:
如果运行以下代码:
Sub Test() my_variable = 12 MsgBox "我的变量是: " & myvariable End Sub
您将收到以下消息:
通过写myvariable而不是产生了错误my_variable,然后消息框显示一个空变量。如果使用OptionExplicit,则不可能出现此错误,因为您将收到指示该问题的编译错误消息。
现在,如果您添加正确的声明:
Sub Test() Dim my_variable As Integer my_variable = 12 MsgBox "我的变量是: " & myvariable End Sub
您将获得一条错误消息,指出正确的错误myvariable:
关于选项显式和数组的说明(声明动态数组):
您可以使用ReDim语句在过程中隐式声明一个数组。
使用ReDim语句时请注意不要拼写错误的数组名称
即使模块中包含OptionExplicit语句,也会创建一个新数组
Dimarr()asLong
ReDimar()'createsnewarray"ar"-"ReDimar()"像"Dimar()"