《Excel VBA 程序开发自学宝典(第 4 版)》是 VBA 入门与提高的经典教材。全书包含基础知识部分和高级应用部分。其中,基础知识部分包含 VBA 的基础理论、常用语句解析、综合应用、编程规则与代码优化等,提供了详尽的理论阐述和案例演示。高级应用部分包含数组、正则表达式、字典、设计窗体、VBA 与注册表、处理文件及文件夹、开发自定义函数、ribbon 功能区设计、与Word/PPT 协同办公,以及开发通用插件等专业知识。
本书基于Excel 2019 撰写,不过代码可在Excel 2010、Excel 2013 和Excel 2016 中通用。如果你的Excel 版本不是2019 也可以不用升级,可以直接阅读本教材,按步骤操作即可。
本书是《Excel VBA 程序开发自学宝典(第3 版)》的升级版,在升级过程中做了大量的修改,包括调整章节顺序、舍弃部分实用性不好的内容、删除一些已经淘汰的技术、增加全新案例和章节等,特别是讲解了Excel VBA 与Word、PPT 的协同办公知识,有必要认真学习。本书附赠案例源文件和案例源代码,以及复杂案例的演示视频。
VBA 入门与提高的经典教材,附赠案例源文件和案例源代码,以及复杂案例的演示视频
自序
如何学习VBA
VBA 是什么
VBA 是依附在Excel 中的二次开发语言,全称为“Visual Basic For Application”。VBA 已有
20 多年历史,截至本书完稿时最新版本是7.01,其开发环境和语法已趋于完善。
VBA 不仅是Excel 的二次开发平台,同时还大量应用在其他软件中,包括自动计算机设计软件AutoCAD、平面设计软件CorelDraw、文字处理软件Word、网页设计软件FrontPage、项目管理软件Project、办公软件WPS 等。VBA 的应用前景相当广阔。
学习VBA 有用吗
这是很多网友问过笔者的问题,其实答案只有一个——任何软件都有用,只看你学到了什么
程度。绝大多数软件都能提升工作效率,以及带来经济效益,但前提是学得足够好,以及用得恰到好处。当然,也可以换一种方式回答:别问有没有用,你有几分耕耘呢?
?
学习VBA 的必要性
VBA 能做什么?是否有必要学习?VBA 有很多事都不能做,例如不能开发独立的应用程序、
不能开发ERP 系统、不能实现网页设计、不能防御计算机病毒等,但是在它的专业领域可以实现诸多令人惊奇的功能,常常让人感叹:原来表格制作可以这么快捷!
在工作中你是否有很多需求是Excel 做不到的?比如底端标题、隔N 行插入M 行、批量转
换金额大小写、批量生成产品标签等。
Excel 的某些内置函数你是否一直不满意?例如,无法计算当前页的页码;Vlookup 函数只
能返回第一个找到的对象;SUM 函数不能实现按颜色汇总,也不能对超过15 位的数据求和,等等。上述所有问题都可用VBA 轻松解决。
当然,VBA 更重要的应用在于开发插件、设计运算系统(如财务报表、人事管理系统、仓库
进销存等),以及与Word 协同办公。当VBA 的功能发挥到极致时,很多平常需要数小时的计算工作,VBA 能在一两秒钟内完成。“秒杀”对于VBA 而言如家常便饭。
学习VBA 的基础
学习VBA 需要会英语、需要懂VB 或者C#语言,这是笔者与网友们在交流中听到的最多的
一种说法。其实不然,VBA 与英语没有太大关系,一个不会英语的人也可以学好VBA,就像笔者自己,在完全不懂英语的情况下自学了6 个月,就掌握了VBA 的初、中、高级应用,至今已经出版了11 本与VBA 相关的图书。
当然,懂英语对学习VBA 是一个辅助条件,可以看懂一些英文的参考资料,但绝不是必要
条件,国内的VBA 资料已足够丰富。
VB 和C#语言是否是学习VBA 的基础条件呢?当然也不是。不过懂VB 或者C#语言对于学习VBA 是有帮助的,主要体现在编程的理念和思路上。一个VB 或者C#编程高手必定已经养成程序员的严谨和逻辑性强等良好习惯,这种习惯和思维对学习VBA 有较大的帮助,但并非VB 和C#语言本身构成了学习VBA 的基础条件,它们所涉及的对象大不相同。一个C#专业程序员转学Excel VBA 仍然需要逐个学习Excel 的对象、属性和方法,没有捷径可走。
那么学习VBA 的基础究竟是什么呢?笔者的看法是:了解什么是单元格、工作表、工作簿,
会使用查找与替换、条件格式、定义单元格格式等功能,懂得排序、筛选、打印预览、插入图形对象、分列、创建图表等操作。当然,还需要认识26 个英文字母。简单吗?是的,学习VBA 的基础条件就这些,如果你都会,那么祝贺你已步入VBA 潜在用户之列。
当然,若要成为好的程序员,还需要有好的耐心、周密的思维能力、充分的逻辑性,以及举
一反三的能力等。
学习VBA 需要背英文单词吗
当然不需要。举一个例子:100 以内的加减法基本人人皆会吧?会计算100 以内的加减法是因为背下了100 以内的所有加减法表达式的答案,还是因为掌握了加减法运算方法呢?
1+1,1+2,1+3,1+4…2+2,2+3,2+4…也就是说,仅100 以内的加法表达式就有5000 多个,
减法表达式也有5000 多个,还不包括小数。把这么多题目的答案背下来是不可能的事,但是懂得运算方法后要快速地得到100 以内的加减法答案却是极容易的事。
掌握了方法,一通百通。学习VBA 同样也是这个道理。
如何发挥VBA 的潜能
VBA 的理论不多,但是极其重要,是解决VBA 问题的基础。学习VBA 需要深入理解VBA 的对象、属性、方法、事件,以及它们的调用方式,之后则可以一通百通。
本书有三分之一的篇幅展示VBA 的基础理论,三分之一的篇幅罗列应用案例,三分之一的
篇幅分析思路及过程,以及阐述代码的优化与提速方法。
通读本书,并且反复操作案例,必可掌握VBA 的精髓。
罗刚君
前言
Excel 是优秀、市场占有率高的制表软件,这归功于它强大且灵活的制表功能和二次开发平
台。通过二次开发平台,让用户可以开发新的工具,从而实现Excel 本身不具备的功能,或者弥补Excel 自身的不足。
Excel VBA 可以实现操作自动化,让某些工作全自动完成,进而提升工作效率,这使得Excel
从众多制表软件中脱颖而出。
通过VBA 进行二次开发可以增强Excel 的功能,将某些复杂或者重复的日常工作简化,还可以开发商业插件或者小型财务系统等。可以说,Excel VBA 已完全融入办公人员的日常工作,拥有VBA 就等于拥有效率。
本书结构
《Excel VBA 程序开发自学宝典(第4 版)》是适合初学者自学的VBA 教材,它包含了Excel
VBA 的基础理论和高级应用。全书共20 章,前10 章讲述VBA 相关的基础理论以及综合练习,
后10 章讲解了VBA 高级应用的相关知识。前10 章主要介绍了Excel VBA 的基础知识,并通过这些知识的综合应用加深你的理解。具体包含VBA 代码的产生方式、存放方式、调用方式、保存方式、程序结构、四大基本概念(对象、属性、方法和事件)、变量与数据类型、常用语句的语法介绍(包含创建输入框、条件判断语句、循环语句、错误处理语句、选择文件与文件夹),然后提供综合应用案例,帮助你巩固前面所介绍的基础知识,从而让知识系统化。而且还介绍了编程规则与代码优化技巧,以及编程的捷径,帮助你掌握更高效的编程方式以及提升程序的效率。
后10 章介绍了Excel VBA 的高级应用,包含数组、正则表达式、字典、设计窗体、VBA 与
注册表、处理文件及文件夹、开发自定义函数、ribbon 功能区设计、与Word/PPT 协同办公,以及开发通用插件等专业知识。对于任何一个VBA 高级用户而言,这些知识都是不可或缺的,掌握这些知识后才能开发出中大型的、高效的程序。
本书特点
相对于同类书籍,本书在内容编排上具有以下特点。
1. 除了对VBA 的基础语法与常见对象的综合应用进行介绍,本书还重点展示了如何开发一
个独立的、完善的、拥有专用菜单的通用程序。
通过本书,你可以编写出自己的专业插件,还能通过这些插件大幅度提升工作效率,让以往
可能需要几十分钟的工作量在几秒钟内即可完成。
2. 本书基于Excel 2019 写作,但是代码可在Excel 2010、Excel 2013 和Excel 2016 中通用。
由于Excel 2003 已经被淘汰了,因此本书不再讲述传统菜单的设计方法,而是重点讲述功能区的开发思路,并提供若干功能区模板,从而让你可以快速设计功能区组件。
3. 本书比较注重代码的通用性和效率,总结了多条优化代码的规则。
4. 正则表达式可以强化VBA 的字符处理能力。本书详细地阐述了正则表达式的调用方法、
语法,并提供了大量案例与思路,这在所有VBA 书籍中是独一无二的。
5. 本书提供了诸多通用型的工具设计思路和源代码,例如,全自动汇总工作簿、批量拆分
工作簿、批量合并工作表、批量打印标签等。你可以借用这些案例的思路开发出更多的小工具,从而提升工作效率。
附赠资源
本书附赠资源中含了三方面内容:案例源文件和案例源代码,以及案例演示视频。
1. 安全源文件
提供所有案例对应的素材文件,你可以直接下载和使用,省去手工模拟数据的时间。
2. 案例源代码
本书所有的案例源代码都有详细的说明,有助于你理解。在学习中千万不要抄写代码,尽量
直接使用现成的代码和源文件去练习,避免抄写错误导致测试不成功,浪费大量时间。
3. 案例演示视频
附赠资源中还包含了100 多个mp4 格式的案例演示视频。操作步骤较多的案例都搭配了视频演示过程,方便你学习和理解,可以更快地掌握操作方法。对于那些单击菜单即可完成的案例则没有相应的视频。
适合读者群
本书对VBA 的基础知识有比较详尽地介绍,并提供了大量的案例引导读者逐步深入学习。
适合阅读本书的读者包括三类:
1. VBA 初学者,通过本书能够踏入VBA 的门槛。
2. 已有VBA 基础但需要扩充知识面者。本书涉及的VBA 知识相当全面,包含了学习VBA
必需掌握的基础知识,也提供了正则表达式、注册表和功能区设计等边缘性知识,从而让你对VBA 掌握得更全面。
本书还提供代码优化的诸多规则,掌握这些规则可让程序具有更强的通用性和执行效率。
3.对VBA 已有相当多的认识,但想开发更专业的插件者。本书对开发加载宏有详细的阐述。