在 Excel 众多的概念中,VBA 是最重要也是最难学的一部分。如果涉及到数据处理工作,VBA 几乎可以实现任何功能,从简单的数据处理,到批量数据分析,再到与 Office 其他软件交互,甚至与操作系统交互实现复杂的功能,VBA 几乎都可以胜任。
那么什么是 Excel VBA,如何学习它,懒人Excel 带你进入 VBA 的世界,从最基础的部分开始讲起,一步一步入门到精通,写出自己的 VBA 程序。
什么是 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 基础
- Excel VBA 中的 10 个基本概念(熟悉 VBA 中的基本概念)
- 启用 Excel 开发工具教程(准备 VBA 开发工具)
- Excel VBA 设置宏安全性(正确设置 VBA 开发安全选项)
- Excel 保存包含 VBA 代码的工作簿(使用指定类型保存含 VBA 代码的工作簿)
- 使用 VBA 编辑器进行 Excel VBA 开发(熟悉 VBA 开发工具的用法)
- 编写你的第一个 VBA 宏(基础实战练习)
- Excel 录制宏并查看宏代码(写 VBA 代码的技巧)
- Excel 中如何运行 VBA 代码?(从工作表运行 VBA 代码)
VBA 变量、类型、运算符
- VBA 变量基础教程(VBA 核心概念)
- VBA 常量基础教程(基础概念)
- VBA 运算符基础教程(加减乘除+高级操作)
- VBA 数据类型基础教程(程序更高效、更精准)
VBA 程序结构
- VBA 程序结构入门(认识 VBA 程序骨架)
- VBA 表达式和语句(最基本的程序单元)
- VBA 变量的声明和赋值(是程序动起来)
- VBA 程序顺序结构(VBA 程序默认执行顺序)
- VBA 程序选择结构(选择性的执行 VBA 代码)
- VBA 程序循环结构(重复执行一段代码)
- VBA With 结构(简化程序书写)
- VBA GoTo 结构(程序之间跳转执行)
- VBA 注释教程和实例(使程序更容易阅读和理解)
VBA 过程和函数 (Sub | Function)
- VBA 过程(Sub) 入门教程和实例(组织代码的容器)
- VBA 函数(Function)入门教程和实例(重复使用相同代码)
- VBA 函数与过程的 6 个不同点(正确使用过程和函数)
- VBA 过程和函数:传递参数教程和实例(正确定义和调用带参数的过程和函数)
- VBA 中 ByVal 和 ByRef 的基础用法和区别(学会正确传递参数)
感谢作者
感谢作者,写得很不错,尤其对VBA初学者而言,十分简练易学。
感谢。有问题可以评论区提出或关注公众号。
可以有些实例吗?比如如何节省制作报表时间等。
会单独开一个专栏介绍实际应用
后面部分没有加到目录里呢?
十分感谢作者,受益匪浅
大神,你这个网站在哪搭建的?是 基于 WordPress吗?
是的,基于WordPress搭建的。
想问一下,作者是不是还没写全?感觉缺少很多对象的讲解呢
是的,其他内容正在编写,很快再更新
必须赞一个
还会更新吗?
会持续更新的
大佬请问多久会更新后续内容呢,学习ing
本月内开始更新
感谢大佬,我会继续关注的
感谢大佬,我也会继续关注的
感谢大佬
大佬,已经7月份了,还没有开始更新呢?
你好,请问在循环结构 dim sh as worksheet, for each sh in worksheets, debug.print sh.name那里,检查说 typed mismatch是为什么呢?(而且我的name无法变成大写)
能否把包含改代码的过程代码全部贴一下,光看上述代码无法确认问题。
有没有抖音账号,想看视频教学
目前没有,不过很快推出视频课程,欢迎关注
老哥,目录需要更新了
目前在制作完成的课程,近期推出
感谢大佬这么详细的讲解.
感谢作者,写得很形象,很好理解
I have made a function in one excel, but I would like to use it in another excel,
for example, the function is as below in the excel A
Function PLM(p, a, L, x)
If x <= a Then
PLM = p * (L – a) * x / L
Else
PLM = p * a * (1 – x / L)
End If
End Function
How can I use it in excel B?
If you want to use it in worksheet, you need to save excel A as addin, and import it through addin window in developer tool tab.
非常感谢作者,有条理,清晰易懂!
感谢作者。来自一个实习僧,图文并茂花了力气了,解说也很详细。我们看得很舒服。
感谢作者,瞬间入门,期待更新!
感谢作者分享 入门教程非常精炼实用
有更新么?
有的
十分感谢作者,在知乎上看到的,资源非常好!
现在算是更新到百分之几的进度了?全看完了,在线等,不急
VBA这部分内容写的真好,循序渐进,专业却易懂,对初学者来说是个很友好教程;持续关注中,期待能有更进一步的深度学习内容,比如对文档对象(工作薄)的操作,以及能有一些常见实例来对照学习能更好。
看作者不但软件水平好,英文水平也是相当不错,是不是两者是相辅相成的?
谢谢肯定。目前在编写 VBA 入门课程,已完成差不多80%。除了易懂易学外,还将加入更多实操、实例和常见问题,欢迎届时关注。
英语方面,较高的英文水平肯定有帮助的,尤其是深入理解方面,不单单是死记硬背了。很多好的 VBA 相关资料,更容易在英文网站上找到。
可以更新点高级的吗
今年将更新更多内容,包括VBA Web 开发、SQL、窗体、插件开发、文件系统相关的内容。