当前位置: 首页 > 编程笔记 >

excel-vba 始终使用“ Option Explicit”

公孙宸
2023-03-14
本文向大家介绍excel-vba 始终使用“ Option Explicit”,包括了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()"

 类似资料:
  • 在本章中,我们来学习如何逐步编写一个简单的宏。 第1步 - 首先,在Excel 2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然后点击“确定”。如下图所示 - 第3步 - “开发工具”功能区出现在菜单栏中。如下图所示 - 第4步 - 点击 “Visual Basic” 按钮打开VBA编辑器

  • 主要内容:应用程序对象,工作簿对象,工作表对象,范围对象使用VBA进行编程时,用户将要处理的重要对象很少。下面是一些常见的对象 - 应用程序对象 工作簿对象 工作表对象 范围对象 应用程序对象 应用程序对象由以下部分组成 - 应用程序范围的设置和选项。 返回顶级对象的方法,比如,等等。 示例 工作簿对象 对象是集合的成员,并包含当前在Microsoft Excel中打开的所有对象。 示例 工作表对象 工作表对象是工作表集合的成员,并包含工作簿中的所有工

  • 都知道学会了英语语法,再加上大量的词汇基础,就算基本掌握了英语了。 类似的要使用vba,也要入乡随俗,了解他的构成,简单的说vba包含数据类型、 变量/常量、对象和常用的语句结构。

  • 我们要求用户可以隐藏/取消隐藏Excel列并在其中移动。用户单击generate CSV按钮后,我们希望列按特定顺序排列。例如,Col1、Col2、Col3是Excel第一行A、B、C列中的列标题。用户将Col2列移到了末尾,并隐藏了Col2:A、B、C列现在有标题:Col1、Col3、Col2(隐藏) 我们的CSV文件应该生成为:Col1,Col2,Col3。使用下面的代码,我们无法看到Col2

  • 我有一个Excel。应用程序对象,在我的VBA代码被执行和Excel 2010完全关闭后,它似乎作为Windows进程存在。i、 e.Windows任务管理器将进程显示为“EXCEL.EXE*32”,即使在我关闭EXCEL之后。 以下是一些代码: 公共子测试Dim xls作为对象 结束子 基本上,我不知道如何销毁我在代码中创建的“xls”。正如我在上面所说的那样,它会让你出类拔萃。EXE*32作为

  • 我有一个带有2个组合框(组合框1和组合框2)以及“保存”和“取消”按钮的用户表单。我的目标是,每当我选择一个组合框中的一个项目时,另一个应该被“阻止”或禁用。因此,当按下保存按钮时,它只能从这两个组合框之一中保存一个项目。 这就是我已经走了多远: 现在的问题是,当我为combobox1选择一个项目,为combobox2选择一个项目时,它仍然保存它。