Microsoft Office VBA 学习日记(二)

总结

添加新模块到 Excel VBA 项目中是一个简单的过程,可以通过 VBA 编辑器的菜单或快捷菜单来完成。模块是组织 VBA 代码的有效方式,可以包含声明、子过程、和函数过程。合理组织模块是编写高效、可维护 VBA 代码的关键。

代码书写一共是以下几个步骤:

  • 定义子过程(第一行)
  • 声明变量(Dim语句)
  • 为变量赋值(Msg和Ans)
  • 连接两个字符串(用&操作符)
  • 使用内置的VBA函数(MsgBox)
  • 使用内置的VBA常量(vbYesNo、vbNo和vbYes)
  • 使用If-Then结构(两次)结束子过程(最后一行)

添加新的 VBA 模块

当开始录制宏时,Excel 会根据选择的宏存储位置自动创建一个新的模块。如果选择将宏保存在“个人宏工作簿”中,那么模块将被添加到这个隐藏的工作簿中。如果选择将宏保存在当前工作簿,那么模块将被添加到当前工作簿的 VBA 项目中。

手动添加新模块的步骤如下:

  1. 打开 VBA 编辑器 (Alt + F11)。
  2. 在“工程资源管理器”窗口中,选择想要添加模块的工作簿的名称。
  3. 在菜单栏中选择“插入(Insert)” > “模块(Module)”。
    • 或者,可以右击工作簿的名称,在弹出的快捷菜单中选择“插入(Insert)” > “模块(Module)”。

新添加的模块将出现在“工程资源管理器”窗口中的“模块(Modules)”文件夹下,这时可以开始在其中编写或粘贴 VBA 代码。

Microsoft Office VBA 学习日记(二)_第1张图片

VBA 模块中的代码类型

  • 声明(Declarations): 在模块的顶部,通常用于声明全局变量或常量,这些变量或常量在整个模块中都可以访问。声明还可以包括编译指令,如 Option Explicit,它要求所有变量在使用前必须显式声明。

  • 子过程(Sub Procedures): 是执行一系列操作的代码块,以 Sub 关键字开始,以 End Sub 结束。录制的宏以及自己编写的过程通常都是子过程。它们可以被用户调用,但不返回任何值。

  • 函数过程(Function Procedures): 是返回单个值的代码块,以 Function 关键字开始,以 End Function 结束。它们可以在其他 VBA 代码中被调用,也可以像工作表函数一样在 Excel 单元格中使用。

单个VBA模块可以存储任意数量的子过程、函数过程和声明。如何编写VBA模块完全取决于个人。有些人更倾向于将一个应用的所有VBA代码都保存在单个 VBA模块中;也有些人喜欢将代码分散到多个不同的模块中。这都是个人选择,跟摆放自己家里的家具差不多。

在 Excel 中使用 VBA(Visual Basic for Applications)时,模块是存储和组织代码的容器。录制的宏以及手动编写的代码都可以保存在模块中。以下是关于如何添加新的 VBA 模块以及模块中代码的类型的更详细解释:

注意

  • 可以删除VBA模块,但是不能删除与工作簿关联的模块(如ThisWorkbook模块)和与表对象相关联的模块(如Sheet模块)。

  • 如何组织模块完全取决于个人偏好和项目的需求。有些开发者喜欢将相关功能的代码放在同一个模块中,以便于管理和维护;而有些开发者则可能根据逻辑功能将代码分散到不同的模块中,以提高代码的可读性和重用性。例如,一个模块可能包含与用户界面相关的所有子过程,而另一个模块则包含处理数据的函数。这样划分可以使代码更加模块化,当项目变得复杂时,也更易于理解和维护。

向模块中放置VBA代码

在进行实质性操作前,首先必须保证VBA模块中要有一些VBA代码。有三种方式可以实现:

  • 用Excel宏录制器录制你的动作,将它们转变成VBA代码。
  • 直接输入这些代码。
  • 从一个模块中复制VBA代码,将这些代码粘贴到另一个模块中。

不过,录制宏后,不是所有的任务都可以被转换成VBA 代码。经常会出现需要直接在模块中输入代码的情况。直接输入代码主要是指你手动输入一行行代码或者从其他地方将代码复制粘贴过来。

VBA中的一条指令可以要多长有多长。但是,考虑到可读性,你可以用续行符把一条很长的指令分解成长度适中的多行。因此,在代码行的末尾加上一个空格和一个下划线字符_,然后按回车键并继续在下一行输入这条指令(又称为语句)。

使用代码窗口的小tips

1. 使用快捷键

快捷键可以加快编码速度并提高效率:

  • F5:运行程序。
  • F8:逐行执行代码。
  • Ctrl + Space:自动完成和显示智能提示列表。
  • Ctrl + Shift + I:跳到声明的变量或过程。
  • Ctrl + Y:删除当前行。
  • Ctrl + G:打开“立即窗口”以查看输出或运行表达式。
  • Ctrl + R:显示或隐藏“工程资源管理器”。

2. 使用代码折叠

如果代码窗口支持代码折叠(某些 VBA 版本可能不支持),可以折叠或展开不同的代码段,这有助于专注于当前正在处理的部分。

3. 利用拖放

可以通过拖放文本来重新组织代码行,这样可以快速移动代码块。

4. 使用断点

在代码中设置断点可以调试程序。只需点击代码边缘或按 F9,就可以设置或清除断点。

5. 使用注释

通过添加注释来记录代码的功能和操作思路。使用 ' 符号开始注释。

6. 查找和替换

使用 Ctrl + F 可以快速查找代码中的特定文本,使用 Ctrl + H 可以替换文本。

7. 代码格式化

保持代码整洁和一致的格式化有助于可读性。使用缩进 (Tab 键) 和空行来组织代码块。

8. 使用模块级和程序级代码分隔符

在模块中使用分隔符可以帮助逻辑上分隔不同的代码段。例如,可以在不同的函数或子过程之间插入一行由等号或连字符组成的注释行。

9. 利用立即窗口

立即窗口 (Immediate Window) 可以用来测试和调试代码片段。可以在其中运行任意代码行或查询变量值。

10. 使用条件编译

在不同的部署阶段,可能需要编译不同的代码块。使用 #If...Then...#Else 可以根据条件来包含或排除代码块。

11. 代码模块化

将常用的代码片段封装到单独的过程或函数中,这样可以提高代码的重用性并减少冗余。

12. 错误处理

在代码中加入错误处理,如 On Error GoTo 语句,这样可以在发生错误时提供更清晰的指导。

13. 监视窗口

通过监视窗口 (Watch Window),可以监视变量的值或表达式的结果,而不必在代码中添加额外的输出语句。

14. 定期备份代码

不定期地将VBA 代码导出到一个文件中,以备不时之需。

你可能感兴趣的:(microsoft,excel)