excel-vba 始终使用“ Option Explicit”

示例

在“ VBA编辑器”窗口中,从“工具”菜单中选择“选项”:

然后,在“编辑器”选项卡中,确保选中“需要变量声明”:

选择此选项将自动置于Option Explicit每个VBA模块的顶部。

小提示:到目前为止尚未打开的模块,类模块等都是如此。因此,如果您已经看过例如Sheet1在激活选项“需要变量声明”之前的代码,Option Explicit则不会添加!

Option Explicit要求必须在使用之前定义每个变量,例如,使用Dim语句。如果未Option Explicit启用,则VBA编译器会将任何无法识别的单词视为该Variant类型的新变量,从而导致与印刷错误有关的极难发现的错误。与Option Explicit启用,未确认的话会导致抛出一个编译错误,表示有问题的行。

范例:

如果运行以下代码:

Sub Test()
  my_variable = 12
  MsgBox "我的变量是: " & myvariable
End Sub

您将收到以下消息:

通过写myvariable而不是产生了错误my_variable,然后消息框显示一个空变量。如果使用Option Explicit,则不可能出现此错误,因为您将收到指示该问题的编译错误消息。

现在,如果您添加正确的声明:

Sub Test()
  Dim my_variable As Integer
  my_variable = 12
  MsgBox "我的变量是: " & myvariable
End Sub

您将获得一条错误消息,指出正确的错误myvariable:


关于选项显式和数组的说明(声明动态数组):

您可以使用ReDim语句在过程中隐式声明一个数组。

  • 使用ReDim语句时请注意不要拼写错误的数组名称

  • 即使模块中包含Option Explicit语句,也会创建一个新数组

    Dim arr() as Long

    ReDim ar() 'creates new array "ar" - "ReDim ar()" 像 "Dim ar()"