懒人Excel教你轻松掌握VBA宏编程
懒人Excel教你轻松掌握VBA宏编程
在数据处理工作中,学会使用 Excel VBA 可以极大提升效率。懒人Excel 提供了一站式的 VBA 宏编程基础入门教程,从零开始带你掌握如何编写第一个 VBA 宏程序。通过这些教程,你将学会如何节省时间、自动化任务以及减少错误。无论是创建自定义函数还是批量处理大量数据单元格,VBA 都能帮你实现。赶快加入懒人Excel 的学习之旅,让你的数据处理工作事半功倍!
什么是 Excel VBA?
首先,第一个问题,什么是 VBA?
Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。
以上是 VBA 的百科定义,说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。Office 软件提供丰富的功能接口,VBA 可以调用它们,实现自定义的需求。基本上,能用鼠标和键盘能做的事情,VBA 也能做。
正如前文所述,VBA 可以运行在 Office 软件上,包括 Excel、Word、PPT、Outlook 等。VBA 语言在 Office 软件中是通用的,基本语法和用法都相同。但是每一个软件具有自己独有的对象,例如 Excel 有单元格对象,Word 有段落对象,PPT 有幻灯片对象。
回到 Excel VBA,用它可以编写自定义函数,插入任意图表、批量处理大量数据单元格,编写插件自动化工作。甚至可以编写基于 Excel 的复杂的管理系统,其功能可以媲美桌面软件。
在本系列教程中,我们学习 VBA 语言语法和 Excel 特有的对象的使用。在往后的教程中,如没有特殊说明,文章提到的 VBA 指的是 Excel VBA。
VBA 与宏有什么区别?
在学习 VBA 过程中,经常会出现一个说法,「宏」。简单的说,宏是一段可以运行的 VBA 代码片段,也可以说是一个简称,并没有特别的不同之处。所以学习 VBA 时,不用纠结于两者到底有什么区别,只需要记住一点,宏是使用 VBA 编写的一段代码片段。
学习 Excel VBA 有什么用处?
前面我们说到,Excel 中,VBA 几乎可以实现任何功能,从简单的数据处理,到批量数据分析,再到与 Office 其他软件交互,甚至与操作系统交互实现复杂的功能,VBA 几乎都可以胜任。以下是 Excel VBA 几个典型的用途。
- 节省时间:只需一次点击就可以重复执行任意数量的操作。例如,现在要新建 20 个工作表,手动操作可能需要一分钟的时间。使用 VBA 只需一秒即可。
- 自动化任务:只需一次点击就可以按预先设置好的步骤,自动完成操作。例如,插入一个图表并设调整格式,根据其复杂程度,可能需要多达几分钟时间。而使用VBA编写调整步骤,一次点击,几秒内即可完成所有的操作。
- 减少错误:相比于手动操作出现的错误,只要正确编写 VBA 代码,执行过程中就不会出现错误。例如,从一区域中筛选指定数据,并复制到另外一个位置,手动操作可能会出现漏选的可能。但是使用 VBA,极短的时间内正确无误的完成操作。
- 与其他软件交互:使用 VBA,可以在 Excel 里创建、更新 Word、PPT 等文件。还可以与系统交互,做到复制、移动、重命名其他文件等操作,无需打开其他文件。
Excel VBA 基础
VBA 变量、类型、运算符
VBA 支持多种数据类型,包括数字类型和非数字类型。可以通过 Dim、Public 或 Private 语句声明变量,变量命名需要遵循一定的规则。VBA 还支持算术、比较、逻辑和连接运算符,用于执行各种计算和操作。
VBA 程序结构
VBA 程序结构包括条件语句(如 If-Then-Else)、循环语句(如 For-Next、Do-While)等控制结构,用于实现复杂的逻辑判断和重复操作。
VBA 过程和函数 (Sub | Function)
在 VBA 中,可以编写 Sub 过程和 Function 函数来封装代码,实现特定功能。Sub 过程用于执行一系列操作,而 Function 函数可以返回一个值。通过调用这些过程和函数,可以实现代码的复用和模块化。
录制和使用宏
要自动执行重复性任务,可以使用 Microsoft Excel 中的宏录制器录制宏。 假设日期采用随机格式,而你想要将单个格式应用于所有日期。 宏可以实现此功能。 可以先录制一个用于应用所需格式的宏,然后在需要时重播该宏。
WindowsMacOS
录制宏时,宏录制器会采用 Visual Basic for Applications (VBA) 代码录制所有步骤。 这些步骤可以包括键入文本或数字,单击功能区或菜单上的单元格或命令,设置单元格、行或列的格式,甚至是从外部源(例如 Microsoft Access)导入数据。 Visual Basic Application (VBA) 是功能强大的 Visual Basic 编程语言的子集,随附于大多数 Office 应用程序。 虽然 VBA 可实现自动执行 Office 应用程序内和应用程序间的流程,但如果宏录制器可以完成所需工作,则不必了解 VBA 代码或计算机编程。
请务必记住,录制宏时,宏录制器几乎可以捕获你进行的所有操作。 因此如果操作序列中出现错误,例如单击了一个本不打算单击的按钮,宏录制器会录制该错误操作。 解决方法是重新录制整个操作序列,或修改 VBA 代码本身。 这就是录制内容时最好录制你非常熟悉的流程的原因。 操作序列的录制越流畅,播放时宏的运行就越高效。
宏和 VBA 工具位于“开发工具”选项卡上,由于该选项卡默认是隐藏的,因此第一步是启用选项卡。 有关详细信息,请参阅显示“开发工具”选项卡。
录制宏
应了解以下几个有关宏的有用事项:
- 录制用于在 Excel 的一个区域中执行一组任务的宏时,该宏只对该区域内的单元格运行。 因此将额外的行添加到该区域时,该宏不会对新行运行相关流程,只会对区域内的单元格运行。
- 如果计划录制一个较长的任务流程,请录制多个相对较小的宏,而不是一个较大的宏。
- 并不是只有 Excel 中的任务才可录制在宏中。 宏过程可以扩展到其他 Office 应用程序,以及支持 Visual Basic Application (VBA) 的任何其他应用程序。 例如,可以录制完成以下操作的宏:首先更新 Excel 中的表格,然后打开 Outlook 将表格以电子邮件的形式发送给某个电子邮件地址。
执行以下步骤可录制宏。
- 在“开发工具”选项卡上的“代码”组中,单击“录制宏”。
-或- - 在“宏名”框中,输入宏的名称。 尽可能提高名称的描述性,以便在创建了多个宏后也可以快速找到该宏。
注意: 宏名的第一个字符必须是字母。 后面的字符可以是字母、数字或下划线字符。 宏名中不能有空格,下划线字符可用作单词的分隔符。 如果使用的宏名同时还是单元格引用,则可能会出现错误消息,指示宏名无效。 - 若要分配用于运行宏的键盘快捷方式,请在“快捷键”框中,键入任何字母 (大写或小写将适用于要使用的) 。 最好使用Ctrl+Shift(大写) 组合键,因为当包含宏的工作簿处于打开状态时,宏快捷键将覆盖任何等效的默认 Excel 快捷键。 例如,如果使用Ctrl+Z(撤消) ,你将失去在该 Excel 实例中撤消的能力。
- 在“保存在”列表中,选择保存宏的位置。
通常,你会将宏保存在“此工作簿”位置,但如果希望宏在使用 Excel 时可用,请选择“个人宏工作簿”。 选择“个人宏工作簿”时,Excel 会创建一个隐藏的个人宏工作簿 (Personal.xlsb)(如不存在),并将宏保存在此工作簿中。 - 在“说明”框中,选择性地键入有关宏用途的简要说明。 虽然“说明”字段是可选的,但建议输入说明。 此外,请尝试输入有意义的说明,包括任何可能会对你或运行该宏的其他用户有用的信息。 创建大量宏后,说明可以帮助你快速确定宏的用途,否则可能只能猜测。
- 单击“确定”开始录制。
- 执行要录制的操作。
- 在“开发工具”选项卡上的“代码”组中,单击“停止录制 ”。
- 或 -
在 Excel 中使用录制的宏
在“开发工具”选项卡上,单击“宏”,查看与工作簿关联的宏。 或按Alt+ F8。 这会打开“宏”对话框。
警告: 宏不能被撤消。 首次运行录制的宏之前,请确保已保存要运行宏的工作簿,或者最好在工作簿副本上运行,以防不需要的更改。 如果运行了宏,但没有实现所需操作,可以关闭工作簿而不保存。
下面是有关在 Excel 中使用宏的详细信息。
任务 说明
在 Excel 中更改宏安全性设置 阅读有关宏的可用安全性设置及其含义的具体信息。
运行宏 可通过多种不同的方式运行宏,如使用快捷键、图形对象、快速访问工具栏、按钮,甚至是在打开工作簿时运行。
编辑宏 使用 Visual Basic 编辑器编辑附加到工作簿的宏。
将宏模块复制到另一个工作簿 如果某个工作簿中包含你希望用于别处的 VBA 宏,则可以使用 Microsoft Visual Basic 编辑器,将包含该宏的模块复制到另一个打开的工作簿中。
将宏指定给对象、形状或图形 在工作表上,右键单击要向其分配现有宏的对象、图形、形状或项目,然后单击“分配宏”。在“指定宏”框中,单击要指定的宏。
向按钮指定宏 可以将宏指定给图形图标,并将其添加到快速访问工具栏或功能区。
向工作表上的控件指定宏 可以向工作表中的表单和 ActiveX 控件指定宏。
启用或禁用 Office 文件中的宏 了解如何启用或禁用 Office 文件中的宏。
打开 Visual Basic 编辑器 按Alt+F11
查找有关使用 Visual Basic 编辑器的帮助 了解如何查找有关 Visual Basic 元素的帮助。
在 Visual Basic 编辑器 (VBE) 中使用录制的代码
可以在 Visual Basic 编辑器 (VBE) 中使用录制的代码,并添加自己的变量、控件结构和宏录制器无法录制的其他代码。 由于宏录制器几乎会捕获在录制时执行的每个步骤,因此也可以清理宏中任何不必录制的无用代码。 检查录制的代码
实际应用案例
让我们通过一个实际案例来展示 VBA 的强大功能。假设你需要每周两次更新 Excel 表格中的产品价格,并检查是否触发了敲入或敲出条件,然后通过邮件通知客户。这个任务可以通过 VBA 宏和 Windows 任务计划程序来实现自动化。
- 自动刷新 Bloomberg 数据:使用 VBA 调用 Bloomberg API 刷新数据。
- 检查敲入/敲出状态:遍历数据行,根据价格判断是否触发敲入或敲出条件。
- 自动发送邮件:使用 Outlook 发送状态更新邮件给客户。
通过这个案例,你将学会如何将 VBA 应用于实际工作场景,实现自动化任务。
常见应用场景
VBA 在日常工作中的应用非常广泛,以下是一些常见的应用场景:
- 数据汇总:将多个 Excel 文件的数据汇总到一个总表中。
- 邮件发送:根据 Excel 中的客户信息自动发送邮件。
- 格式调整:批量调整工作表的格式。
- 打印任务:实现自动打印功能。
- 网络数据抓取:从网页抓取数据并导入 Excel。
- 跨软件操作:在 Excel、Word、PPT 等软件之间实现数据交互。
通过学习这些应用场景,你将能够将 VBA 应用于自己的工作中,提高工作效率。
总结
通过本教程,你已经掌握了 VBA 的基础知识和实际应用方法。VBA 是一个强大的工具,能够帮助你自动化日常工作流程,节省时间和精力。希望你能将所学知识应用到实际工作中,创造出更多的价值。继续探索和实践,你会发现 VBA 的无限可能!