如何在vba中使用显式选项语句?
关键点
什么是显式 VBA 选项
Option Explicit 是一个可以在模块开头使用的语句,强制声明所有变量。添加此语句后,VBA 将在您运行代码时显示编译错误,并突出显示代码中需要声明的变量。
当您在模块的开头添加显式选项时,VBA 在其下方添加分隔线,然后您可以开始编写过程。当您使用显式声明选项并运行过程时,VBA 会检查是否存在未声明的变量并向您显示错误消息。
Option Explicit Sub myMacro() a = 50 MsgBox a End Sub
以上是未声明变量时收到的消息。
在 VBA 中启用显式选项
要在模块中启用显式选项语句,请按照以下步骤操作。
- 首先,打开 Visual Basic 编辑器,然后在“工具”菜单上单击“选项”。
- 之后,在选项中,转到编辑器选项卡并选中“需要变量声明”框。
- 最后,单击“确定”。
- 执行此操作后,每次添加新模块时,VBA 都会添加一个显式选项。
但它不会将此声明添加到您现有的模块中,因此您必须手动将它们一一添加到每个现有模块中。
如何手动添加呢?
正如我所提到的,Option Explicit 语句必须位于第一个模块过程(Sub 或 Function)之前。因此,您需要将此声明添加到第一个过程(通用声明区域)上方,并确保仅添加一次。
如果将其添加到过程内部或两个过程之间,当您尝试执行任何模块代码时,VBA 将显示错误。
示例(为什么使用 Option Explicit 语句是一个好习惯)
让我向您展示一个示例,让您了解为什么强烈建议使用 Option Explicit 语句。看下面的代码。
Sub myMacro() Dim myText As String myText = "Puneet" MsgBox MyTxt End Sub
在此代码中,我将变量“myText”声明为字符串,然后设置该变量的值。最后,我使用了一个消息框来显示变量的值,但如果仔细观察,我会将该变量拼写为“MyTxt”而不是“myText”。
我需要您 2 分钟的时间来帮助您了解这里的真正问题。当我输入错误的变量名称时,VBA 将其视为单独的变量,并且由于我不使用显式选项语句,因此它不会显示错误。
这就是消息框使用第二个(输入错误的)变量的原因,该变量没有分配任何值。现在想一想;如果您编写很长的代码并且不使用显式选项语句,则在重新阅读所有代码之前将很难跟踪此错误。
但是,当显式声明选项打开时,当我运行此代码时,会出现错误。
Option Explicit Sub myMacro() Dim myText As String myText = "Puneet" MsgBox MyTxt End Sub