深入浅出Excel VBA
  • 推荐50
  • 收藏66
  • 浏览19.6K

深入浅出Excel VBA

杨洋 (作者) 

  • 书  号:978-7-121-35464-9
  • 出版日期:2019-02-01
  • 页  数:
  • 开  本:
  • 出版状态:图书立项
  • 维护人:李利健
本书基于作者在高校课堂和网络教育中多年积累的教学经验,由浅入深地讲解了Excel VBA程序设计的知识与技巧,涵盖数据处理、格式排版、文件管理、窗体设计,以及集合、字典、正则表达式、Web信息提取等各方面常用技能。
本书力求做到体系严谨、语言风趣,用轻松、生动的语言引导读者领会Excel VBA编程的精髓与关键,进而一窥计算机科学世界的神奇与美妙。同时,本书精心设计了60个改编自真实场景的原创案例,使每个环节的学习都能映射到实际生活中的需求,为初学者提供一条独特、实用的VBA学习路径。此外,本书的主体内容与作者在网易云课堂(http://study.163.com)开设的“全民一起VBA”系列视频课程相互匹配并互有补充。该系列课程以生动幽默的动画形式展现了Excel VBA编程的全貌,读者可以参照学习,加深理解。
本书适合初学Excel VBA程序设计的读者,以及非计算机专业、无实际编程经验的各行业人士学习使用,也可以作为大专院校学生的辅助教材或自学参考书。
同济大学陈强、东北财经大学史达、上海财经大学张学良三位教授联合力荐;
一本充满智慧的VBA技术书籍,案例贴近实际需求,附赠大量视频和扩展内容。

杨洋 东北财经大学会计学硕士、加拿大约克大学计算机科学硕士、上海同济大学信息管理博士。
杨氏在线教育创始人,前同济大学副教授,长期在东北财经大学、同济大学等高校任教,并曾从事计算机科学博士后研究工作,在计算机教学领域、特别是面向人文经管学科的信息技术教育方面具有丰富的经验。此外还曾供职于加拿大TD银行等大型企业机构,对行业发展和企业需求具有深入的理解。

写在前面
学习一个“小”技术,解决一个大问题

在写本书之前,笔者制作的视频课程“全民一起VBA”已在网易云课堂获得六万余名学员的关注和好评。而本书写作的初衷也正是应他们的要求,希望有一本内容翔实、语言风格轻松易读的VBA图书。但笔者深知,要想写好一本真正能够传道解惑的技术书,其难度并不亚于撰写任何一本学术专著。
据说杨振宁先生曾经开过一个玩笑,大意是“现代数学教材可以分为两种:让人读了一页就读不下去的,以及让人读了一行就读不下去的”。其用意是希望数学书不要写得抽象乏味,使人摸不着头脑,因为“数学毕竟要让更多的人来欣赏,才会产生更大的效果” 。其实在计算机教学领域也是一样,怎样让更多的人领略到计算机科学的魅力,感受到亲自编写代码操控电脑所带来的成就感,也应被我们这些教育工作者视作重要的目标。
VBA就是非常符合这一目标的教学题材,尤其适合于没有编程基础,但又可以通过学习编程来大幅提高工作效率的人士。不过很多VBA图书似乎忘记了读者“零基础”“非专业”的特点,把讲解重点放在了各种功能的实现上,忽视了初学者编程思维和基本功的培养。以笔者多年的教学经验来看,这种内容安排对大部分初学者来说并不合适,假如没有辅以专业教师的讲解,很难让读者真正掌握构思和编写程序的能力。因此,笔者在本书中重点着笔于程序结构、思路启发以及应用技巧上,同时精心设计了很多简短而有代表性的案例,希望为有意学习VBA的人士提供一个深入理解程序设计,进而一窥软件开发全貌的路径。
如果读者看到这里决定多读一页,那么可以在接下来的内容中看到:为什么要学习VBA、怎样学习VBA,以及怎样使用本书。
1. 电脑将要抢走我的工作,该怎么办
最近几年,身边各行各业的朋友都突然关注起AI(人工智能)的发展,而诸如“未来会计师岗位将全部被电脑取代”“XX投行将全面采用计算机替代交易员”“AI普及对律师就业市场造成巨大冲击”等极富冲击力的新闻标题,也屡屡见诸报纸和网站的头条。这股浪潮影响之大,以至于在笔者居住的城市,过去一年就有几万名金融业白领在下班后选择去夜校从头学习计算机技术。
电脑真的会抢走我们的工作吗?每当在课堂上被问到这类问题时,笔者总会提醒同学:耸人听闻与掩耳不闻一样,都无助于理性思考。从长远看,人工智能的发展当然会逐渐替代大量的日常工作,但是按照目前的算法理论和技术水平,再考虑到社会经济各方面的制约,这个替代过程恐怕要经历一个相当长的时间。然而在这个漫长的阶段里,直接抢走你工作的恐怕不是电脑,而是那些“能够指挥电脑的人”。
举一个真实的例子,下面是某位网友在知乎(www.zhihu.com)上贴出的一段亲身经历(https://www.zhihu.com/question/64821272/answer/224650964):
对于这样的任务,公司领导当然希望能够拥有一台超级AI,就像科幻电影中那样,只要对着它说“找到电脑中所有的Office文件,然后给每一页都打上两个红框”,连“请”字都不用提,就能瞬间得到结果。不过遗憾(幸运)的是,至少在本书写作时,像这样能够一听就懂并迅速想出正确方案的AI还没有出现;或者即使出现,其建造和训练的成本也高不可攀。于是,领导们还是不得不屈尊雇佣我们这些白领来完成工作。
我们这些接到任务的白领又能怎样完成它呢?相信绝大多数Office用户都与上面这位提问者一样,只能亲自打开每一个文件夹下的每一个Office文件,手工执行插入文本框操作后再逐一保存。如果每台电脑中有上千个文件,恐怕搞定一台电脑就需要一两天时间。而面对帖子中提到的几百台电脑,即使昼夜加班也很难在截止日期之前全部完成。
但是对于懂VBA的Office用户来说,这个任务就会简单许多:只要新建一个Excel文件并写入一小段VBA代码(在知乎该问题中可以见到笔者的示例回答),就能够为同一文件夹下的所有Excel文件都插入一个显示存档日期的文本框。而这段代码只要稍微修改一下,就能扫描硬盘上所有的文件夹及其子文件夹,并扩展到Word和PPT文件,从而让计算机自动完成全部任务,无须人工操作。对于一个具有VBA基础的人来说,做好这个程序大概只需要半天,而后面的事情就是把它复制到每一台电脑上运行一遍,最后检查处理一些异常情况即可。
那么,当这家公司准备缩编裁员时,面对一个能写出上面代码的候选人和一个只会熟练排版或使用公式的候选人,如果其他条件相同,哪一位能保住自己的工作呢?答案不言自明。所以,回到开头的问题,笔者想表达的意思就是:对大多数办公室白领来说,真正需要担心的不是电脑智能有多么强大,而是我们指挥电脑的能力有多么弱小。当办公室里的大部分工作还无法由计算机完全独立解决时,谁能够更高效地使用计算机,谁就是最后一个在遥远的未来被某个超级AI替换掉的人。
“指挥电脑”的能力又是什么呢?点鼠标、按快捷键、记住各种触控手势等当然都在此列。然而真正万能的指挥棒则是编写程序代码,使用计算机自己的语言去告诉它你想执行的操作。请相信:只要掌握了一个编程工具,并从自己的工作中最熟悉的任务开始实践,就会迅速发掘出电脑这一超级武器的真正威力,从而用一两小时就完成以前几天几夜才能完成的事情。而让每个曾经只会按鼠标的人都能感受到编程的价值和乐趣,正是笔者写作本书的动力所在。
2. 为什么要学VBA,而不是其他工具
理解了学习编程的意义后,接下来的问题自然就是“我应该学习哪一种语言”。世界上曾经出现过的程序语言多达数千种,目前仍有人经常使用的也有近百种。显然,作为非计算机专业人士,我们只能在其中选择最适合自己的一种。笔者的建议是:如果你平时最常接触的桌面软件是Excel等Office应用,那么VBA就是最适合的初学语言。
VBA的全称为“Visual Basic for Application”,是微软公司专门针对Word、Excel、Access等Office应用软件而设计的基于Visual Basic语言的二次开发工具,从1994年开始就整合在Office系列中。之所以说VBA是最适合Office用户学习编程的入门语言,主要原因在于以下几点。
(1)简单易学、快速上手
如果不考虑Scratch等针对低龄儿童所设计的编程工具,VBA可以说是最简单易学的编程工具之一,因为它是从BASIC这门经典语言演化而来的。而BASIC的全称就是“Beginner's All-purpose Symbolic Instruction Code”,意即“初学者通用符号指令码”,其第一设计原则就是“让初学者容易使用”。因此可以说,“简单易学、轻松上手”是根植于BASIC系列语言(包括VBA)基因中的核心特征。
与此同时,程序设计作为一种思维方式,其实在各种主流语言中都存在着很多共性特征和相通之处,一旦能够熟练掌握一种语言(比如VBA),再学习其他程序设计工具也会事半功倍。所以,对于Office用户来说,从最简单的BASIC系列语言学起,应用到最熟悉的Excel日常处理中,确实是打开编程世界大门的最短路径。
(2)学以致用,立竿见影
笔者曾经在同济大学、东北财经大学等高校开设过十几年的计算机相关课程。教学经历中让我印象深刻的一点是:之所以很多人没能学会某门课程,仅仅是因为他们不知道这门课程有什么用处,也从来未曾把它应用到自己的日常工作和生活中。这也正是为什么现代教育理论中,格外强调“目标导向”学习的原因。
具体到编程语言方面,尽管目前高校大多数院系专业都开设了基本的程序设计课程,比如C、Java、Python、C++等,但这些语言的设计宗旨是为了让使用者能够独立开发一个完整的软件,所以学生只有在认真学习过一两个学期,陆续学完语法基础、用户界面、数据存储等多个模块的知识后,才能逐渐用它们编写一些小工具来解决一些实际问题。而在此之前的漫长学习过程中,大多数学生只能用它们做一些书后练习中的编程作业,其枯燥乏味让很多人中途放弃。
VBA则与之不同,其宗旨在于通过简单几行代码来调用Office中的已有功能,从而实现自动化办公。可以说,只需要掌握最基本的VBA语法,就可以尝试控制Office软件自动完成各种操作,解决实际问题。
(3)功能强大,随处可用
VBA是为Office而设计的,因此,我们在使用Office软件时的绝大部分人工操作都可以通过编写VBA程序自动完成。下面列出的就是一些常见的VBA应用场景。
★ 数据处理。虽然使用Excel的公式和数据透视表等工具可以应付很多数据处理任务,但是总有一些独特的需求难以用这些通用工具快速实现,比如怎样对含有合并单元格的表格进行排序、怎样按照“先进先出法”计算库存等。而VBA则允许我们根据实际需求,完全按照自己的想法定制解决方案,并且能一次性处理成百上千个文档中的所有数据。
★ 格式操作。前面“批量添加文本框”的问题就是一个典型的格式操作任务。而若想大量修改Office文件(无论Excel工作簿还是Word文档)的格式,只需通过“录制宏”等手段得到与格式有关的VBA代码,然后增加几行循环或判断的语句,就可以轻松实现。
★ 文本分析。在日常办公中,文字处理与数字计算同样常见,比如,在几百个Word文章中找出所有的电话号码,并单独保存到一个Excel表格中。但是Office中的文字处理工具却远不如数字处理工具(公式、透视表等)丰富,因为文字处理需求复杂,很难找到统一的模式。而VBA不仅提供了大量文本函数,同时又支持正则表达式这个强大的文本分析工具。所以只要掌握了它们的用法,就可以针对自己的需求,编出各种自动化文本处理程序。
★ 创建模型。对于很多财金企业,最宝贵的资产之一就是各种分析模型。现实中,很多这种模型都保存在Excel中,以便业务人员快速得到数据分析结果。在这种情况下,使用VBA程序来编写模型具有很多优势,比如,可以一键运行,从而简化操作、提供图形用户界面、自动生成批量的复杂报表、随机模拟仿真等。此外,将模型写成代码还可以设置一定的“抄袭门槛”,从而不会像公式那样让任何人都可以轻易读懂。
★ 自动办公。也许VBA最无可替代的优势就是其“自动化办公”能力。如前所述,Office软件中的各种操作都可以通过VBA代码“复现”,而日常工作大多都是机械重复,所以完全可以让VBA自动处理这些琐事。比如自动生成并群发邮件、自动在多个文档中找到指定的数据并定时打印、自动对几百个文件进行分类并另存到不同的文件夹中等。
★ 其他方面。VBA的能力并不局限于Office软件中,而是可以扩展到Windows操作系统、数据库管理系统甚至互联网等环境中。比如,可以在VBA程序中自动运行其他Windows程序,还可以用VBA读写各种数据库、自动下载外部网站的网页内容等,而所有这些操作又都能够与Office软件结合起来。
3. 怎样才能学好VBA
整体来说,VBA的学习过程主要包括以下四个阶段。
(1)培养编程思维
VBA是一门程序设计语言,而程序设计则是一种思维方式,即按照计算机的运作机制去思考问题,然后把自己的想法用计算机的方式加以表述。所以,学习程序语言最重要的并不是牢记各种关键字和语法,而是领会到它所蕴含的思维方式。笔者见过许多学习过多门计算机课程,甚至毕业于计算机专业,却仍然不会编程解决简单问题的人。究其原因,就是没有培养出编程思维。
因此,对初学VBA的读者来说,首要任务就是真正理解程序语言的逻辑和计算机的工作方式,能够将自己日常工作的流程用VBA语言要素精确地表达出来。一旦具备了这种思维方式和表述能力,后面的学习就会事半功倍。
(2)熟悉Office对象
在理解了VBA的思维方式,熟悉了各种程序结构后,接下来的任务就是用这种语言发出命令,以操作Office软件。而将VBA程序与Office软件连接起来的桥梁就是VBA中的对象体系。Office软件的每一个组件、每一种功能在VBA看来都是一个对象或一个属性/方法。所以,只要知道了这些对象或属性/方法的名字与格式,就能够在VBA程序中随意控制Office软件。
(3)提高实践能力
学习编程离不开大量的实践与练习。很多人在学习程序设计时都会感到:书上的内容看起来很好理解,可是一旦亲自编写程序就无从下手,写出的代码也总有莫名其妙的错误。这种情形持续一段时间后,学习者就会丧失信心与兴趣。
若想摆脱这种困境,唯一的办法就是充分练习、积极实践。读者每学到本书的一个知识点,都应将书中的示例抄写在自己的电脑中,亲自运行并思考结果。在思考清楚后,凭借自己的理解和记忆将这个程序再“盲打”一遍并运行。只有完成这两个步骤,才算是完成了基本的练习,从而为下一个知识点的学习做好准备。
而在完成练习之后,更重要的一环就是将学到的技术尽可能应用到日常工作中。比如,经常思考“刚才的操作是否可以用VBA搞定?”,如果可以,就大胆尝试。如此不仅能巩固学到的知识,还会逐渐总结出自己的经验与方法,让使用VBA成为像走路、开车一样自然而然的习惯。
(4)自学更多技能
在实践中,读者总会遇到很多书中没有细讲的问题,这种现象十分正常,因为VBA的类库和系统函数成百上千,还会随着Office软件的升级而不断完善。同时随着技能和经验的提高,读者也会开始尝试编写更加复杂的程序,因而需要了解更多算法、网络和系统功能等方面的知识。显然,没有任何图书可以把以上所有的内容都涵盖在内,因而只有善于查阅资料并自学提高的人才能在掌握入门知识之后,进一步提高自身的水平。
4. 这本书能提供什么帮助
写本书之前,笔者曾经多年为高校经管专业的学生开设相关课程,并在网易云课堂(study.163.com)推出了广受好评的系列网络课程“全民一起VBA”。在这些教学活动中积累的经验与案例(特别是同学们对课程的反馈信息)为本书的内容编排提供了重要的指引。整体来说,本书并没有像传统教科书那样按照知识点的类别从下向上进行罗列,而是尽可能遵循初学者的认知过程,以实际应用为线索循序渐进。这样可以确保读者在每一部分只接触一个知识点,而且能够马上理解并将其应用到实际工作中。具体地说,本书的内容结构如下:
第1章介绍VBA的编程环境与基本格式,特别是怎样用VBA代码读写Excel单元格。通过对本章的学习,读者马上就可以开始编写简单的VBA程序,为后面的学习和练习奠定基础。
第2章至第7章讲解了程序设计的基本元素与语法,包括变量、循环、判断、字符串、程序调试等内容。这一部分是培养编程思维的关键,所以请没有深入接触过程序设计的读者格外重视。而对于已经学习过其他语言的读者来说,VBA也有很多独特的细节语法值得注意,本书对此均有详细说明。此外,与其他章节一样,笔者特别列出了初学者最容易犯的各种错误,并详细分析了每种错误所体现出的认识误区和解决办法。
第8章至第11章重点介绍VBA的对象体系,以及过程、函数等结构化程序设计元素。学习了这些章节后,读者就可以用VBA代码全面控制Excel的基本功能与外观。
前面11章内容相当于是VBA学习的“第一个循环”,使读者全面了解VBA的体系并能够编程解决基本问题。在此基础上,本书第12章至第18章的内容构成了“第二个循环”,使读者深入了解更多的VBA语法知识、编程技巧及对象功能,具体包括VBA的各种数据类型、数组的应用、文件系统的管理、函数与过程的高级知识、Range对象的高级操作、Excel事件与窗体编程等。在掌握这部分内容之后,读者将会对VBA编程有一个更加深刻的认识,从而能够理解和应对各种常见错误,开发出更加高效、强大和美观的程序。学习完这些章节后,读者可以算是真正具备了基本的VBA开发能力。
第19章和第20章进一步扩展VBA的功能,介绍了怎样使用字典和正则表达式等高级工具,怎样读写数据库或Word等其他Office文档,怎样从互联网上下载网页数据,并且简要介绍了算法、类模块,以及管理信息系统和高级Office功能等知识。因篇幅所限,本书部分内容以数字形式发布于网站(http://www.broadview.com.cn/35464)上。
总之,本书的写作宗旨就是为广大初学编程的人提供一个既易学又深刻的、系统性的学习路线,语言风格也力求做到轻松活泼。此外,特别感谢大连医科大学艺术学院刘立伟副教授为本书各章首页绘制的精彩插图,希望读者能够借此加深对每章核心思想的印象。
如果读者希望在学习过程中进一步加深理解,还可以与“全民一起VBA”系列课程对照学习。所有购买本书的读者,均可以到电子工业出版社网站(http://www.broadview.com.cn/35464)浏览该系列课程的“基础篇”内容,而全系列完整内容(包括“提高篇”和“实战篇”)则可以到网易云课堂(https://study.163.com/series/1001373002.htm) 观看。这些视频课程中提供了丰富的动画和案例演示,可以帮助读者获得更好的学习效果,而且其中使用的案例与本书并不相同,可以互为补充。不过本书的章节结构与视频课程并不完全一致,对于某些知识点的取舍和深度也略有不同。因此,本书在每一章开头的摘要中都会指明本章内容所对应的视频课程章节,有兴趣的读者可留意对照。

附赠内容标题(下载网址:http://www.broadview.com.cn/35464)
第21章 平台的扩展——用VBA处理数据库和其他Office文件
第22章 触角的延伸——获取网页数据

目录

第1章 奇境的入口——从VBE走进VBA编程世界 1

1.1 在哪里写代码——VBE与模块 2

1.1.1 找到VBA编辑器 2

1.1.2 在正确的位置编写代码 4
1.2 见微知著——从一个简单例子观察VBA程序的结构 7
1.2.1 Sub / End Sub——程序的起始与结束 8
1.2.2 词汇与语句——程序语言的基本要素 9
1.3 Cells与运算符——用VBA控制Excel单元格 10
1.3.1 Cells——代码与表格之间的第一个桥梁 11
1.3.2 赋值操作——等号的主要用途 12
1.3.3 加、减、乘、除——基本的算术运算符 12
1.4 VBA程序的运行与保存——按钮、XLSM文件及宏安全性 13
1.4.1 宏与宏安全性 14
1.4.2 运行VBA程序的常用方法 14
1.4.3 XLSM文件——VBA程序的藏身之所 17
本章小结 18
第2章 程序的记忆——变量与常量 19
2.1 变量的作用与含义 19
2.1.1 为什么需要使用变量 19
2.1.2 什么是变量 21
2.1.3 再问一次:什么是变量 22
2.1.4 前后对比——使用变量的好处 23
2.2 没有规矩不成方圆——有关变量的最佳实践 24
2.2.1 变量的命名 24
2.2.2 强制声明 28
2.2.3 把重复数据都抽取为变量 31
2.3 常量——那些重复却不变的内容 32
本章小结 35
第3章 力量的源泉——循环结构 36
3.1 循环结构概述 37
3.2 For…Next循环语句 38
3.2.1 For…Next循环语句的基本语法 38
3.2.2 For…Next循环的典型用法 40
3.2.3 Step子句 42
3.2.4 For…Next循环的“初学者陷阱” 45
3.3 用循环实现汇总——累加器与计数器 48
3.4 缩进与注释——提高代码的可读性 50
3.4.1 代码缩进 50
3.4.2 代码注释 52
本章小结 53
第4章 智能的产生——判断结构 54
4.1 If语句与关系运算 55
4.1.1 用If语句实现判断结构 55
4.1.2 用关系运算比较大小 57
4.1.3 用Else和ElseIf实现多分支判断 57
4.2 嵌套结构——多层If语句的使用 67
4.3 逻辑表达式——怎样表示“与”“或”“非” 71
4.3.1 逻辑表达式 71
4.3.2 常见逻辑运算符的使用方法 71
4.4 Select…Case结构 79
4.4.1 Select…Case结构的基本用法 79
4.4.2 在Case语句中表示复杂条件 80
本章小结 81
第5章 文字的表述——字符串基础 83
5.1 字符串的基本概念与格式 84
5.1.1 什么是字符串 84
5.1.2 区分字符串与变量 86
5.1.3 在字符串中表示特殊符号 86
5.2 字符串的理解要点 89
5.2.1 空字符串 89
5.2.2 非打印字符(空白字符) 90
5.2.3 区分大小写字符 91
5.2.4 区分数字与字符串 91
5.3 字符串连接操作 92
5.3.1 字符串连接符——“+”与“&” 92
5.3.2 灵活构造字符串 93
本章小结 96
第6章 诊断的技巧——程序调试 97
6.1 程序错误的类型与排查 97
6.1.1 编译错误 98
6.1.2 运行时错误 99
6.1.3 逻辑错误 100
6.2 使用断点与监视 101
6.2.1 “望闻”之术——设置断点 101
6.2.2 “问”的技巧——添加监视 102
6.2.3 “切”脉秘籍——让程序单步执行 104
6.3 代码“无间道”——Debug.Print与立即窗口 109
本章小结 110
第7章 维度的拓展——再谈循环结构 111
7.1 多重循环 112
7.1.1 双重循环的概念 112
7.1.2 初学者常见错误 114
7.1.3 更多层次的嵌套循环 119
7.2 While循环 120
7.2.1 Do While循环的基本用法 120
7.2.2 While循环结构的初学者陷阱 123
7.2.3 Do While循环的典型应用 125
7.2.4 While循环的各种形式 129
7.3 Exit语句与Goto语句 131
7.3.1 跳出当前结构——Exit语句的使用 131
7.3.2 随心所欲难免逾矩——Goto语句及其利弊 133
7.3.3 异常处理——On Error Goto语句 134
本章小结 137
第8章 名字的魔力——面向对象与录制宏 138
8.1 面向对象——程序员的世界观 139
8.1.1 面向过程与面向对象简述 139
8.1.2 类、对象、属性、方法 141
8.2 从Range看VBA对象的使用方法 143
8.2.1 Range对象概述 143
8.2.2 Range对象的基本用法与技巧 144
8.2.3 设置单元格格式—— 字体、颜色及With结构 150
8.2.4 智能提示——使用As关键字声明对象类型 156
8.3 Excel对象体系 157
8.3.1 了解所有对象——对象浏览器与MSDN 157
8.3.2 最常用的Excel对象 159
8.4 打开黑箱看代码——录制宏 160
8.4.1 宏的录制过程 160
8.4.2 宏代码的解读与运用 162
8.4.3 对录制宏代码的初步优化 164
本章小结 165
第9章 能力的释放——批量处理工作表与工作簿 166
9.1 个体与集合——再谈Excel常用对象间的关系 167
9.2 工作表对象 168
9.2.1 为Range对象指定所属工作表 168
9.2.2 技巧与陷阱——With与Range 170
9.2.3 最佳实践——按名引用工作表 172
9.2.4 遍历所有工作表 172
9.2.5 多个工作表汇总的常用技巧 175
9.2.6 工作表的其他常用操作 180
9.3 工作簿对象 183
9.3.1 工作簿文件的打开、保存与关闭 183
9.3.2 常用技巧——工作簿的拆分与汇总 187
本章小结 191
第10章 结构的艺术——过程、函数与字符串处理 193
10.1 子过程与“结构化程序设计” 194
10.1.1 子过程基本概念与调用方法 194
10.1.2 变量的作用域 198
10.1.3 参数的概念 199
10.1.4 子过程与参数的更多细节 202
10.2 函数与自定义公式 204
10.2.1 函数的格式与功能 204
10.2.2 将函数作为表格公式 209
10.2.3 系统函数 211
10.2.4 Msgbox函数 212
10.3 字符串函数 214
10.3.1 计算字符串长度 214
10.3.2 将字符串规范化 215
10.3.3 替换文本 217
10.3.4 子串操作 218
10.3.5 字符串函数的应用 222
本章小结 223
第11章 万物的源头——Application对象 225
11.1 隐藏的Application对象 226
11.1.1 Cells的真实来历 226
11.1.2 与Cells类似的情况 227
11.2 通过WorksheetFunction属性调用公式 229
11.3 Application的其他属性与方法 232
11.3.1 常用属性 232
11.3.2 常用方法 235
本章小结 236
第12章 细分的好处——VBA数据类型 238
12.1 VBA数据类型概述 239
12.1.1 为什么要划分数据类型 239
12.1.2 变体类型的功与过 240
12.1.3 VBA中的数据类型概览 243
12.2 数字类型 244
12.2.1 常用类型:Integer、Long和Double(符号问题) 244
12.2.2 其他类型:Byte、Single、Currency和Decimal 246
12.2.3 简写符号 248
12.2.4 初学者陷阱:常数有时也要声明类型 248
12.2.5 自动类型转换与强制类型转换 250
12.3 字符串类型 253
12.3.1 字符的本质 253
12.3.2 像数字一样处理字符串 255
12.4 日期类型 258
12.4.1 日期和时间的一般表示 259
12.4.2 常用日期函数 259
12.4.3 日期类型的本质 265
12.5 逻辑类型 266
12.5.1 逻辑值与逻辑运算 266
12.5.2 逻辑类型的应用 269
12.6 对象类型 272
12.7 数据类型的检测 273
12.8 “无”的各种表示方法——Nothing、Null与Empty 275
本章小结 275
第13章 集体的名义——VBA中的数组 277
13.1 数组的基本概念 278
13.1.1 什么是数组 278
13.1.2 数组声明中的细节问题 279
13.1.3 数组的用途与技巧 281
13.2 动态数组 285
13.2.1 动态数组与ReDim语句 285
13.2.2 使用Split拆分字符串 287
13.3 多维数组与表格读写 289
13.3.1 什么是二维数组 289
13.3.2 二维数组与Range对象 291
13.3.3 多维数组的概念 293
本章小结 294
第14章 信息的整合——文件与文件夹操作 295
14.1 读写文本文件 296
14.1.1 什么是文本文件 296
14.1.2 文本文件的打开与读取 296
14.1.3 将数据写入文本文件 300
14.2 打开文件夹中的所有文件 302
14.2.1 Dir函数的基本用法 302
14.2.2 Dir函数的更多技巧 303
14.3 其他文件操作简介 305
本章小结 306
第15章 选择的自由——自定义参数及其他函数技巧 307
15.1 可选参数 308
15.1.1 Optional与默认值 308
15.1.2 可选参数的省略与按名传递 309
15.1.3 判断可选参数是否被使用 311
15.2 引用传递与值传递 312
15.3 随机数函数的使用 314
15.3.1 Rnd函数的基本用法 314
15.3.2 深入了解:“伪”随机数与“种子” 316
本章小结 318
第16章 区域的管理——深入了解Range对象 320
16.1 遍历Range内部单元格 321
16.1.1 Cells属性 321
16.1.2 自定义公式 322
16.1.3 Rows与Columns属性 323
16.2 获取Range对象的描述信息 324
16.2.1 位置信息 324
16.2.2 公式信息 325
16.2.3 合并单元格信息 326
16.3 重新定位Range对象 329
16.3.1 Offset、Resize与CurrentRegion属性 329
16.3.2 Worksheet对象的Cells与UsedRange属性 333
16.3.3 Application对象的Union与Intersection方法 334
16.4 Find与Sort方法简介 334
16.4.1 Range.Find方法 334
16.4.2 Range.Sort方法 336
本章小结 337
第17章 “神经”的连通——编写事件处理程序 339
17.1 事件编程基本概念与过程 340
17.1.1 事件与事件响应 340
17.1.2 事件编程的基本步骤 340
17.2 Excel常用事件 343
17.2.1 工作表事件 343
17.2.2 工作簿常用事件 347
17.3 事件级联 348
17.4 访问修饰符与静态变量 350
17.4.1 访问修饰符 350
17.4.2 静态变量 352
17.4.3 静态变量在事件处理中的应用 353
本章小结 355
第18章 界面的革新——设计用户窗体 356
18.1 窗体程序开发过程 357
18.1.1 窗体与控件 357
18.1.2 窗体模块与设计器 357
18.1.3 指定属性和外观 359
18.1.4 为窗体事件编写代码 361
18.1.5 窗体的显示与退出 363
18.2 窗体与常用控件的属性、事件和方法 365
18.2.1 窗体对象 365
18.2.2 标签与文本框 367
18.2.3 列表框与组合框 369
18.2.4 单选按钮、复选框及框架 372
18.2.5 窗体控件综合案例——将数据录入工作表 375
18.3 其他常用控件及附加控件 378
18.3.1 其他常用控件简介 378
18.3.2 附加控件的使用 379
18.4 关于窗体与控件的其他要点 383
18.4.1 多窗体协同 383
18.4.2 多个控件的对齐 383
18.4.3 工作表中的ActiveX控件 384
本章小结 385
第19章 工具的升级——集合、字典及正则表达式 386
19.1 集合对象 387
19.2 字典对象 388
19.2.1 使用CreateObject创建外部对象 388
19.2.2 字典的概念与应用 390
19.2.3 字典的其他常用属性与方法 393
19.3 正则表达式入门 394
19.3.1 什么是正则表达式 395
19.3.2 正则表达式的基本语法 396
19.3.3 在VBA中使用正则表达式 410
本章小结 415
第20章 天地的无穷——那些未及细说的主题 416
20.1 类模块与自定义类 417
20.2 开发小型管理信息系统 418
20.3 深入操作Office软件与Windows系统 421
20.4 算法的价值 421
结语 VBA的未来 423

读者评论

  • 下载后无法播放

    xx22ss发表于 2024/5/22 13:47:34
  • 附赠内容没有解压密码打不开

    nonar发表于 2024/2/15 2:09:15
  • 谢谢杨老师的讲解,真正的从零开始,深入浅出。小白学VBA的好课程!!!

    北庄人发表于 2022/10/16 21:26:31
  • 请问附赠的视频是全民一起VBA基础篇吗?

    zcs发表于 2022/2/9 22:30:29
  • 看了全民一起VBA的课买的书,书和视频搭配理解就更加清晰了,感谢杨老师的精彩授课

    suada23发表于 2021/10/9 23:07:33

相关图书

趣玩Python:自动化办公真简单(双色+视频版)

本书以数据收集→数据清洗→数据分析→数据可视化→根据数据可视化结果(即图表)做决策为脉络,介绍Python在实际工作场景中的应用,侧重于用Python解决工作中...

 

万亿级流量转发:BFE核心技术与实现

章淼 (作者)

本书围绕BFE 开源项目,介绍网络前端接入和网络负载均衡的相关技术原理,说明BFE开源软件的设计思想和实现机制,讲解如何基于BFE开源软件搭建网络接入平台。<b...

¥89.00

Excel VBA程序开发自学宝典(第4版)

罗刚君 (作者)

《Excel VBA 程序开发自学宝典(第 4 版)》是 VBA 入门与提高的经典教材。全书包含基础知识部分和高级应用部分。其中,基础知识部分包含 VBA 的基...

¥119.00

Power BI建模权威指南

阿尔贝托·费拉里 (Alberto Ferrari) 马尔·科鲁索 (Marco Russo) (作者) 刘钰 潘丽萍 付大伟 (译者)

如何使用Excel和Power BI高效发现数字背后的信息?在数据分析时如何准确写出所需的公式?如何快速响应各方需求,提升自己的价值……答案是使用“数据模型”。...

 

跟着视频学Excel数据处理:函数篇

曹明武 (作者)

本书主要介绍Excel函数知识。主要内容包括函数基础知识、函数使用小技巧、文本函数、查找引用函数、逻辑函数、日期和时间函数、其他函数,以及函数初级综合案例、函数...

¥59.90

财务分析那些事儿:Power BI财务数据实战

杨晨 (作者)

本书从财务分析师的视角阐述了Power BI在日常财务工作中的应用,主要包括搭建财务模型、制作分析报告、风险控制、制定预算和财务分析案例等方面,对提升数据处理效...

¥79.00