VBA Option Explicit

2025年3月17日 | 阅读 7 分钟

"VBA Option Explicit 语句用于在编写代码时强制声明变量。这是一个安全且易于管理变量的选项。"

在编写代码时,VBA 开发人员可能会忘记定义变量,或者错误地重复使用同一个变量,或者拼错变量名。 代码不会报错,但也不会得到预期的输出。以一家跨国公司为例,开发人员有大量的代码行。如果任何变量被错误地遗漏或拼写错误,要反复检查和纠正成千上万行代码将是一项难以完成的任务。

为了避免上述问题,**Option Explicit 语句**是一个很好的解决方案。Option Explicit 强制要求在程序顶部声明所有变量,并且还能高亮显示代码中未定义的变量。

VBA Option Explicit 语句使用户能够在一个地方定义所有变量,这样将来如果宏出现错误,您可以直接在模块的开头进行检查。借助 Option Explicit,您还可以声明全局变量。

Option Explicit 的优点

  1. Option Explicit 语句可以避免在使用变量时出现的输入错误。例如,如果您在代码顶部声明了 Option Explicit 语句,并尝试访问一个未定义的变量,它将显示一个运行时错误。
  2. Option Explicit 语句强制用户声明所有变量。
  3. Option Explicit 语句阻止使用未声明的变量,并在编译时引发错误。
  4. Variant 数据类型会消耗更多时间,最终导致宏变慢。有时,用户不声明变量类型,然后在代码中使用一个未定义的变量。在这种情况下,VBA 编译器会选择默认变量,即 Variant 数据类型。为了避免这种情况,Option Explicit 是一个很好的解决方案。
  5. 对于未定义的变量,编译器会隐式选择任何变量的 Variant 数据类型。Variant 数据类型在数据类型列表中占用最多的空间,即 16 字节。想象一下,每次您忘记声明变量时,它都会占用 16 字节的内存。因此,Option Explicit 可以防止此问题并节省内存。

实现 Option Explicit 的方法

在 VBA 编程中,有两种使用 Option Explicit 语句的方法。

方法 1

第一种方法简单易用。要使用它,请在我们 VBA 子过程中写上 option explicit 语句,然后继续编写其余代码,如下所示。

VBA Option Explicit

正如您在上面的图片中看到的,Option Explicit 语句以蓝色字体突出显示。在上面的代码中,我们声明了一个变量,如果我们运行代码,由于变量未声明,我们会收到一个编译错误作为输出。

VBA Option Explicit

方法 2

许多用户可能会忘记每次编写 VBA 代码时都提及 option Explicit。VBA 提供了一个额外的选项,您可以使用它将 Option Explicit 设置为代码中每个页面的默认语句。您只需要按照一系列说明操作,VBA 就会自动将此语句插入到您的所有模块中。

步骤 1: 打开 VBA 开发工具选项卡。从 VB 编辑器的菜单中,单击“工具”选项卡。将弹出一个窗口(如下图所示),单击“选项”。

VBA Option Explicit

步骤 2: 接下来,将打开“选项”向导窗口。您会注意到顶部有五个不同的选项卡。

VBA Option Explicit

步骤 3: 在“编辑器”选项卡中,您会注意到“要求变量声明”选项,勾选复选框,然后单击“确定”。

VBA Option Explicit

完成上述步骤后,重新启动您的 VBA 模块以在 Visual Basic 编辑器窗口中实现更改。之后,您会注意到对于每个 VBA 模块,Option Explicit 语句将自动出现在 VB 编辑器的顶部。

Excel VBA Option Explicit - 示例 1

编写一段 VBA 代码,并以命令按钮的形式演示实现 Option Explicit 的步骤。

VBA 是一门简单的语言,您甚至可以通过在代码行之前编写语句来使其更简单。它允许我们指示 Excel 在模块顶部定义必需的变量。

以下是实现 VBA Option Explicit 语句的代码中的步骤:

步骤 1: 打开您的 Excel 工作表,然后从 Excel 的功能区标题转到“开发工具”选项卡 ->“控件”部分 -> 单击“插入”选项。

请参考下图

VBA Option Explicit

步骤 2: 将出现一个包含所有控件的窗口。从 ActiveX 控件部分选择第一个控件选项,即命令按钮。

注意:命令按钮是用于插入命令控件的事件。

VBA Option Explicit

步骤 3: 使用鼠标光标,在 Excel 工作表的任何位置绘制命令按钮。拖动鼠标指针形成一个矩形,命令按钮将被绘制出来。

请参考下图

VBA Option Explicit

步骤 4: 双击命令按钮,它将打开 VB 编辑器窗口。

步骤 5: 如上图所示,编写代码,在有人单击命令按钮时显示值为 5 的 Msgbox。

代码

步骤 6: 再次转到“开发工具”选项卡,单击“设计模式”以启用按钮的事件。

VBA Option Explicit

步骤 7: 再次单击命令按钮。此时将弹出一个 MsgBox,显示值 80。

请参考下图

VBA Option Explicit

步骤 8: 现在,我们将手动将 option explicit 语句写在代码的顶部。

代码

步骤 9: 再次单击命令按钮,这次,您将看到编译错误弹出,而不是 MsgBox。

VBA Option Explicit

步骤 10: 由于我们没有声明变量,它显示了编译错误。它还高亮显示了未声明的变量。更正代码,在模块顶部定义变量。

代码

步骤 11: 单击命令按钮,这次,它将显示 Msgbox 并显示输出。

VBA Option Explicit

Excel VBA Option Explicit - 示例 2

有时在 VBA 中,代码运行正常,但我们没有想要的变量。然后开发人员必须重新阅读整个代码并找到错误。这通常是由于使用了错误的未定义变量引起的。在本例中,我们将看到一个这样的情况,然后使用 Option Explicit 语句进行纠正。

以下是实现 VBA Option Explicit 语句的代码中的步骤:

步骤 1:通过单击快捷键 Alt +F11 或单击开发⼯具窗⼝ -> 视觉基本编辑器,转到 VBA 开发⼯具选项卡。

步骤 2: 将出现 VB 编辑器。下一步是创建一个模块。右键单击 VBA 项目 -> 转到“插入” -> 转到“模块”。

VBA Option Explicit

步骤 2: 将插入 VBA 模块。下一步是使用 Dim 语句声明变量并将其初始化为值 10。代码如下:

代码

在上面的程序中,我们使用 Dim 语句将变量定义为 Integer 数据类型。接下来,我们在 range A1 中放置了 var 的值。所以,从技术上讲,对于工作表中的单元格 A1,我们应该有一个值 50。

步骤 3: 按 F5 键运行宏并获取输出。

VBA Option Explicit

正如您在输出中看到的,单元格 A1 没有值,我们的代码也没有给出任何错误。程序是完全正确的,但仍然出现错误。如果您非常仔细地看,您会发现我们拼错了程序中的变量。这些事情很容易被忽略。

步骤 4: 我们将应用 Option Explicit,您将立即看到此语句的差异和重要性。

代码

步骤 5: 再次按 F5 键运行您的代码,这次 VBA 将抛出错误,即“Compile error: Argument not optional”(编译错误:参数不可选)。

请参考下图

步骤 6: 现在,找到变量并更正错误。

代码


VBA Option Explicit

步骤 7: 通过按 F5 键运行代码,您最终将获得输出。结果,值 50 将插入到您的 Excel 工作表的 sheet1 单元格 A1 中。

请参考下图

VBA Option Explicit

要记住的事情

  1. Option Explicit 语句强制开发人员在他的代码中定义每一个变量。
  2. 当您在模块顶部插入 option explicit 语句时,VBA 会在下方添加一条分隔线,然后您可以开始编写代码。
  3. 对于每一个未定义的变量,Option Explicit 都会返回一个编译错误。
  4. 如果您不声明变量,Option Explicit 语句会高亮显示它们。
  5. Option Explicit 语句可以手动输入,用户也可以将其激活为默认选项。

下一主题VBA 错误处理