新書推薦:
《
Python贝叶斯深度学习
》
售價:HK$
89.4
《
启微·狂骉年代:西洋赛马在中国
》
售價:HK$
78.4
《
有趣的中国古建筑
》
售價:HK$
67.0
《
十一年夏至
》
售價:HK$
76.2
《
如何打造成功的商业赛事
》
售價:HK$
89.5
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:HK$
58.2
《
慈悲与玫瑰
》
售價:HK$
87.4
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:HK$
76.2
|
編輯推薦: |
本书是《Excel VBA 程序开发自学宝典(第3 版)》的升级版,在升级过程中作者做了大量的修改,包括调整章节顺序、舍弃部分实用性不好的内容、删除一些已经淘汰的技术、增加全新案例和章节等,特别是讲解了Excel VBA 与Word、PPT 的协同办公知识,有必要认真学习。
|
內容簡介: |
《Excel VBA 程序开发自学宝典(第 4 版)》是 VBA 入门与提高的经典教材。全书包含基础知识部分和高级应用部分。其中,基础知识部分包含 VBA 的基础理论、常用语句解析、综合应用、编程规则与代码优化等,提供了详尽的理论阐述和案例演示。高级应用部分包含数组、正则表达式、字典、设计窗体、VBA 与注册表、处理文件及文件夹、开发自定义函数、ribbon 功能区设计、与Word/PPT 协同办公,以及开发通用插件等专业知识。
本书基于Excel 2019 撰写,不过代码可在Excel 2010、Excel 2013 和Excel 2016 中通用。如果你的Excel 版本不是2019 也可以不用升级,可以直接阅读本教材,按步骤操作即可。
本书附赠案例源文件和案例源代码,以及复杂案例的演示视频。
|
關於作者: |
罗刚君,网名andysky,从事Excel研究及VBA二次开发10多年,擅长Excel函数、图表、透视表和VBA,尤其对Excel VBA有着相当丰富的开发经验和熟练的实战技能,也拥有丰硕的开发成果。
作者担任过近10个Excel相关论坛的版主,著有15本Excel图书,书名如下:
1.《Excel 2007 VBA范例大全》
2.《Excel 2007技法与行业应用实例精讲》
3.《Excel 2007 VBA开发技术大全》
4.《Excel 2007函数案例速查宝典》
5.《Excel VBA程序开发自学宝典》
6.《Excel 2010 VBA编程与实践》
7.《Excel 2010函数与图表速查手册》
8.《Excel VBA程序开发自学宝典(第2版)》
9.《Excel函数、图表与透视表从入门到精通》
10.《来吧!带你玩转Excel VBA》
11.《Excel VBA程序开发自学宝典(第3版)》
12.《Excel 2013函数案例自学宝典(实战版)》
13.《Excel 2013 VBA编程与实践》
14.《Excel 2016实用技巧自学宝典》
15.《Excel VBA与VSTO基础实战指南》
可从以下网址了解更详细的图书信息:
http://excelbbx.net/book.htm
|
目錄:
|
目录
第1章 初步感受VBA的魅力1
1.1 批量任务一键执行1
1.1.1 准备工作1
1.1.2 程序测试1
1.1.3 案例点评2
1.2 数据汇总自动完成2
1.2.1 案例需求2
1.2.2 程序测试3
1.2.3 案例点评3
1.2.4 开发专业程序4
第2章 VBA程序入门5
2.1 如何存放代码5
2.1.1 认识模块5
2.1.2 管理模块6
2.2 如何产生代码7
2.2.1 复制现有的代码7
2.2.2 录制宏7
2.2.3 手工编写代码9
2.2.4 从模板中获取代码10
2.3 如何调用代码10
2.3.1 <F5>键10
2.3.2 组合键11
2.3.3 自定义快捷键12
2.3.4 按钮12
2.3.5 菜单13
2.4 如何保存代码13
2.4.1 工作簿格式13
2.4.2 解决丢失代码问题14
2.4.3 显示文件扩展名14
2.5 如何放行代码15
2.5.1 调整“宏设置”16
2.5.2 添加受信任位置16
2.6 如何查询代码帮助17
2.6.1 Excel不同版本中的帮助差异17
2.6.2 如何调用帮助系统17
2.7 如何简化开发难度19
2.7.1 录制宏19
2.7.2 调用内置提示19
2.7.3 调用笔记21
第3章 VBA的程序结构详解22
3.1 Sub过程基本语法22
3.1.1 认识程序结构22
3.1.2 为VBA程序添加注释23
3.2 过程的作用范围24
3.2.1 何谓作用范围24
3.2.2 公有过程与私有过程的区别24
3.3 过程的命名规则25
3.4 过程的参数25
3.5 过程的执行流程26
3.5.1 正常的执行流程26
3.5.2 改变程序的执行流程26
3.6 中断过程27
3.6.1 结束过程:End Sub27
3.6.2 中途结束过程:Exit Sub27
3.6.3 中途结束一切:End27
3.6.4 暂停过程:Stop27
3.6.5 手动暂停程序:Ctrl Break28
第4章 VBA四大基本概念29
4.1 Excel的对象29
4.1.1 什么是对象29
4.1.2 对象与对象集合30
4.1.3 对象的层次结构32
4.1.4 父对象与子对象33
4.1.5 活动对象34
4.2 对象的方法和属性35
4.2.1 属性与方法的区别36
4.2.2 查询方法与属性的两种方法36
4.2.3 方法与属性的应用差异37
4.3 对象的事件40
4.3.1 什么是事件40
4.3.2 事件的分类及其层级关系41
4.3.3 工作簿事件与工作表事件一览41
4.3.4 工作簿与工作表事件的作用对象42
4.3.5 快速掌握事件过程44
4.3.6 何时需要使用事件过程44
第5章 通过变量强化程序功能45
5.1 数据类型45
5.1.1 为什么要区分数据类型45
5.1.2 认识VBA的数据类型45
5.2 声明变量47
5.2.1 变量的定义47
5.2.2 变量的声明方式47
5.2.3 变量的赋值方式与初始值49
5.2.4 如何确定变量的数据类型正确50
5.2.5 正确声明变量的数据类型的优势50
5.2.6 变量的作用域52
5.2.7 变量的生命周期53
5.3 对象变量53
5.3.1 如何区分对象变量和数据变量54
5.3.2 对变量赋值54
5.3.3 使用对象变量的优势55
5.4 声明常量56
5.4.1 常量的定义与用途56
5.4.2 常量的声明方式57
5.2.3 常量的命名规则57
第6章 详解五大常用对象59
6.1 对象基础知识59
6.1.1 对象的结构59
6.1.2 对象与对象的集合60
6.1.3 引用集合中的单一对象60
6.1.4 父对象与子对象60
6.1.5 活动对象61
6.1.6 使用变量简化对象的引用61
6.1.7 使用With语句简化对象的引用62
6.2 单元格对象63
6.2.1 Range(”A1”)方式引用单元格64
6.2.2 Cells(1,1)方式引用单元格66
6.2.3 [a1]方式引用单元格67
6.2.4 Range(”A1”)、Cells(1,1)与[a1]比较68
6.2.5 Selection与ActiveCell:当前选区与活动单元格69
6.2.6 已用区域与当前区域69
6.2.7 SpecialCells:按条件引用区域70
6.2.8 CurrentArray:引用数组区域74
6.2.9 Resize:重置区域大小75
6.2.10 Offset:根据偏移量引用新区域76
6.2.11 Union:多区域合集78
6.2.12 Intersect:单元格、区域的交集79
6.2.13 End:引用源区域的区域尾端的单元格80
6.2.14 EntireRow/EntireColumn:扩展至整行、整列81
6.2.15 RangeSelection:工作表中的选定单元格82
6.2.16 VisibleRange:指定窗口的可见区域83
6.3 批注对象84
6.3.1 批注对象的特点84
6.3.2 判断单元格中是否有批注85
6.3.3 AddComment:添加单元格批注85
6.3.4 AutoSize:让批注框自动缩放86
6.3.5 AutoShapeType:修改批注的外形86
6.3.6 ClearComments:清空表中所有批注86
6.4 图形对象87
6.4.1 Shapes:图形对象集合87
6.4.2 图形对象的名称87
6.4.3 隐藏的图形对象集合88
6.5 表对象90
6.5.1 表的类别90
6.5.2 Worksheets:工作表集合90
6.5.3 引用工作表子集91
6.5.4 ActiveSheet:活动表91
6.5.5 工作表的特性92
6.5.6 新建工作表93
6.6 工作簿对象93
6.6.1 工作簿格式与特性93
6.6.2 新建工作簿94
6.6.3 Workbooks:工作簿集合94
6.6.4 引用工作簿子集94
6.6.5 ActiveWorkbook:活动工作簿94
第7章 常用语句解析95
7.1 输出/输入语句95
7.1.1 MsgBox函数95
7.1.2 Application.InputBox方法98
7.2 条件判断语句103
7.2.1 IIf函数的语法与应用103
7.2.2 IIf函数的限制105
7.2.3 If Then语句的语法详解106
7.2.4 If Then应用案例106
7.2.5 If Then Else语句的语法与应用107
7.2.6 多条件嵌套的条件判断语句110
7.2.7 Select Case语法详解114
7.2.8 Select Case与If Then Else之比较117
7.2.9 借用Choose函数简化条件选择118
7.3 循环语句120
7.3.1 For Next语句120
7.3.2 For Each Next语句127
7.3.3 Do Loop语法详解132
7.4 错误处理语句140
7.4.1 错误类型与原因140
7.4.2 err对象及其属性、方法141
7.4.3 认识Error函数142
7.4.4 On Error GoTo line142
7.4.5 On Error Resume Next146
7.4.6 On Error GoTo 0151
7.5 预览语句151
7.5.1 认识FileDialog对象151
7.5.2 选择路径152
7.5.3 选择文件153
7.5.4 按类型选择文件154
第8章 开发自启动程序157
8.1 让宏自动执行157
8.1.1 Auto自动宏157
8.1.2 升级版自动宏:事件158
8.1.3 事件的禁用与启用160
8.1.4 事件的特例161
8.2 工作表事件162
8.2.1 在状态栏提示值的单元格地址162
8.2.2 快速输入出勤表163
8.2.3 在状态栏显示选区的字母、数字、汉字个数164
8.2.4 实时监控单元格每一次编辑的数据与时间166
8.2.5 利用数字简化公司名输入168
8.2.6 输入数据时自动跳过带公式的单元格170
8.3 工作簿事件171
8.3.1 新建工作表时自动设置页眉171
8.3.2 未汇总则禁止打印与关闭工作簿172
8.3.3 自动选中相同值并计数174
8.3.4 设计未启用宏就无法打开的工作簿176
8.4 定时执行的程序177
8.4.1 基本语法178
8.4.2 每天在13:28语音提示开会178
8.4.3 在单元格中显示当前时期179
第9章 综合应用案例181
9.1 Application应用案例181
9.1.1 计算字符表达式181
9.1.2 合并相同且相邻的单元格182
9.1.3 定时打印文件184
9.1.4 模拟键盘快捷键打开高级选项185
9.1.5 使用快捷键合并与取消合并单元格186
9.1.6 查找至少两月未付货款的客户名称188
9.2 Range对象应用案例190
9.2.1 合并工作表190
9.2.2 合并区域且保留所有数据193
9.2.3 合并计算多区域的值194
9.2.4 模糊查找公司名称并罗列出来196
9.2.5 反向选择单元格198
9.2.6 插入图片并调整为选区大小200
9.2.7 提取值202
9.2.8 隐藏所有公式结果为错误的单元格203
9.3 Comment 对象应用案例205
9.3.1 在所有批注末尾添加指定日期205
9.3.2 生成图片批注207
9.3.3 添加个性化批注208
9.3.4 批量修改当前表的所有批注外形210
9.4 WorkSheet对象应用案例213
9.4.1 新建工作表并且命名为今天日期213
9.4.2 批量保护工作表与解除保护214
9.4.3 为所有工作表设置水印216
9.4.4 批量命名工作表218
9.4.5 判断筛选条件220
9.5 Workbook对象应用案例223
9.5.1 拆分工作簿223
9.5.2 每10分钟备份一次工作簿225
9.5.3 5分钟内未编辑工作簿则自动备份226
9.5.4 记录文件打开次数228
9.5.5 不打开工作簿而提取数据230
9.5.6 建立指定文件夹下所有工作簿目录和工作表目录232
第10章 编程规则与代码优化234
10.1 代码编写规则234
10.1.1 对代码添加注释234
10.1.2 长代码分行237
10.1.3 代码缩进对齐238
10.1.4 声明有意义的变量名称239
10.1.5 If Then End If类配对语句的输入方式240
10.1.6 输入属性与方法的技巧240
10.1.7 无提示的词组的输入技巧242
10.1.8 善用公共变量242
10.1.9 使用常量名称替代数值243
10.1.10 尽可能兼容Excel 2003到Excel 2019之间的所有版本243
10.2 优化代码思路244
10.2.1 强制声明变量244
10.2.2 善用常量244
10.2.3 关闭屏幕更新244
10.2.4 利用With减少对象读取次245
10.2.5 利用变量减少对象读取次数245
10.2.6 善用带$的字符串处理函数246
10.2.7 不使用Select和Activate直接操作对象246
10.2.8 将与循环无关的语句放到循环语句外247
10.2.9 利用Instr函数简化字符串判断247
10.2.10 使用Replace简化字符串连接248
10.3 借用参数简化程序调用248
10.3.1 参数的概念与用途248
10.3.2 参数的语法结构249
10.3.3 设计带有必选参数的过程249
10.3.4 设计带有可选参数的过程251
10.3.5 设计带有不确定数量参数的过程253
10.3.6 参数的赋值方式254
第11章 高阶应用1:数组256
11.1 数组基础256
11.1.1 何谓数组256
11.1.2 数组的特点256
11.1.3 一维数组257
11.1.4 二维数组259
11.1.5 数组的参数260
11.1.6 声明数组变量261
11.1.7 动态数组与静态数组的区别263
11.1.8 释放动态数组的存储空间268
11.2 数组函数268
11.2.1 用函数创建数组268
11.2.2 获取数组元素270
11.2.3 判断变量是否为数组270
11.2.4 转置数271
11.2.5 获取数组的上标与下标272
11.2.6 转换文本与数组273
11.2.7 筛选数组275
11.3 数组实战276
11.3.1 将指定区域的单词统一为首字母大写276
11.3.2 罗列不及格人员姓名、科目和成绩277
11.3.3 跨表搜索学员信息278
11.3.4 将职员表按学历拆分成多个工作表280
11.3.5 将选区的数据在文本与数值间互换281
11.3.6 获取两列数据的相同283
11.3.7 无人值守的多工作簿自动汇总285
第12章 高阶应用2:正则表达式288
12.1 何谓正则表达式288
12.1.1 概念288
12.1.2 特点288
12.1.3 调用方式289
12.2 语法基础290
12.2.1 调用正则表达式的基本格式290
12.2.2 正则表达式的对象、属性和方法291
12.2.3 匹配的优先顺序294
12.2.4 借用元字符强化搜索功能295
12.3 正则表达式应用311
12.3.1 乱序字符串取值并汇总311
12.3.2 计算建筑面积312
12.3.3 计算括号中的数字合计313
12.3.4 删除字符串首尾的空白字符314
12.3.5 将字符串中的多段数字分列315
12.3.6 提取E-mail地址315
12.3.7 提取文件的路径和名称316
12.3.8 汇总人民币317
12.3.9 分列的高级应用318
12.3.10 删除重复字词319
第13章 高阶应用3:字典321
13.1 Dictionary对象基础321
13.1.1 Dictionary对象的调用321
13.1.2 Dictionary对象的特点323
13.1.3 Dictionary对象的属性与方法323
13.2 Dictionary对象的应用技巧328
13.2.1 利用Dictionary创建三级选单328
13.2.2 分类汇总330
13.2.3 对多列数据相同者应用背景色331
13.2.4 按姓名计数与求产量平均值332
13.2.5 按品名统计半年的产量合计333
第14章 高阶应用4:设计窗体335
14.1 UserForm简介335
14.1.1 窗体与控件的用途335
14.1.2 插入窗体与添加控件的方法335
14.2 窗体控件一览336
14.2.1 标签336
14.2.2 文本框336
14.2.3 命令按钮336
14.2.4 复合框337
14.2.5 列表框337
14.2.6 复选框337
14.2.7 选项按钮337
14.2.8 分组框337
14.2.9 切换按钮337
14.2.10 多页控件337
14.2.11 滚动条338
14.2.12 图像338
14.2.13 RefEdit338
14.2.14 附加控件338
14.3 设置控件属性338
14.3.1 调整窗体控件位置与大小339
14.3.2 设置控件的顺序339
14.3.3 共同属性与非共同属性339
14.3.4 设置颜色属性339
14.3.5 设置控件的宽度与高340
14.3.6 设置Picture属性340
14.3.7 设置RowSource属性341
14.3.8 设置List属性342
14.4 窗体与控件的事件343
14.4.1 UserForm对象的事件343
14.4.2 激活窗体时将所有工作表名称导入到列表框344
14.4.3 双击或者按键关闭窗体345
14.4.4 窗体永远显示在上左角346
14.4.5 按下鼠标左键移动窗体,按下鼠标右键移动控件346
14.4.6 控件事件介绍348
14.4.7 在窗体中建立超链接349
14.4.8 将鼠标指针移过时切换列表框数据351
14.4.9 让输入学号的文本框仅能输入6位数字352
14.4.10 运行窗体期间用鼠标调整文字框大小354
14.4.11 为窗体中所有控件设置帮助355
14.5 窗体的综合应用案例357
14.5.1 设计登录界面357
14.5.2 权限认证窗口358
14.5.3 设计计划任务向导359
14.5.4 设计文字滚动的动态帮助信息,并且可单击停止362
14.5.5 用窗体预览图片364
14.5.6 设计多表输入面板365
14.5.7 多条件高级查询367
第15章 高阶应用5:VBA与注册370
15.1 VBA对注册表的控制方式370
15.1.1 什么是注册表370
15.1.2 VBA操作注册表的方法371
15.2 注册表的应用372
15.2.1 记录后一次打开工作簿的时间372
15.2.2 在窗体中预览图片,自动记忆上次的路373
15.2.3 调整所有表的零值显示状态375
15.2.4 插入签名图片到活动单元格376
15.3 注册表函数的缺点与改善方法377
15.3.1 VBA操作注册表的缺点377
15.3.2 借用脚本自由控制注册表378
15.3.3 修改注册表禁用QQ和记事本378
15.3.4 禁止使用U盘380
第16章 高阶应用6:处理文件与文件夹382
16.1 认识FSO对象、属性与方法382
16.1.1 FSO对象的调用方式382
16.1.2 FSO的对象383
16.1.3 FSO常用对象的方法与属性383
16.2 用FSO处理文件与文件夹386
16.2.1 将D盘中所有隐藏的文件夹显示出来386
16.2.2 遍历子文件夹创建文件目录387
16.2.3 删除D盘中大小为0的文件夹388
16.2.4 罗列近三天修改过的所有文件的名称389
16.3 读/写文本文件390
16.3.1 创建文本文件并输入内容390
16.3.2 读取文本文件391
16.3.3 开发拆分工作簿工具,可加载参数391
第17章 高阶应用7:开发自定义函数396
17.1 自定义函数的功能和语法396
17.1.1 Function过程与Sub过程的区别396
17.1.2 Function过程的语法396
17.1.3 自定义函数的命名规则398
17.2 开发不带参数的Function过程398
17.2.1 判断活动工作簿是否存在图形对象398
17.2.2 计算公式所在单元格的页数399
17.3 开发带有一个参数的Function过程400
17.3.1 在不规则的合并单元格中执行合计400
17.3.2 计算单元格中“元”前方的数值之和401
17.4 开发带有两个参数的Function过403
17.4.1 提取所有数值与汇总403
17.4.2 获取值、小值或众数的地址404
17.4.3 去除括号后计算表达式406
17.5 开发复杂的Function过程407
17.5.1 按条件串连字符407
17.5.2 按单元格背景颜色进行条件求和409
17.5.3 按颜色查找并返回数组410
17.5.4 计算两列的相同项与不同项412
17.6 编写函数帮助414
17.6.1 MacroOptions方法的语法414
17.6.2 为函数分类及添加说明415
第18章 高阶应用8:ribbon功能区设计417
18.1 功能区开发基础417
18.1.1 ribbon的特点417
18.1.2 功能区的组件图示417
18.1.3 手工定制功能区418
18.1.4 认识ribbon代码编辑器418
18.1.5 获取内置按钮图标419
18.2 ribbon定制之语法分析420
18.2.1 功能区代码的结构420
18.2.2 显示与隐藏功能区:ribbon422
18.2.3 隐藏选项卡:tab423
18.2.4 创建新选项卡:tab424
18.2.5 创建新组:group425
18.2.6 创建对话框启动器:dialogBoxLauncher26
18.2.7 在组中添加命令按钮:butto428
18.2.8 创建切换按钮:toggleButton430
18.2.9 标签与复选框:labelControl/ checkBox431
18.2.10 在按钮之间添加分隔条:separator432
18.2.11 创建弹出式菜单:men433
18.2.12 创建拆分按钮:SplitButton434
18.2.13 创建下拉列表:DropDown436
18.2.14 创建编辑框:editBox437
18.2.15 锁定或隐藏内置命令438
18.3 使用回调函数强化功能区439
18.3.1 为什么需要使用回调函数439
18.3.2 回调函数详439
18.3.3 创建在每月的1日到3日才能使用的按442
18.3.4 创建按下与弹起时自动切换图标的按钮443
18.3.5 创建一个能显示图形对象数量的标签445
18.3.6 在功能区中快速查找446
18.3.7 在组的标签处显示问候语448
18.3.8 调用大图片创建下拉菜449
18.3.9 通过复选框控制错误标识的显示状态452
18.3.10 在功能区创建工作表目录454
18.4 使用模板455
18.4.1 模板的重要性455
18.4.2 模板的使用方法456
18.5 制作两个模板456
第19章 高阶应用9:与Word/PPT协同办公460
19.1 操作Word和PPT文件的基本思路460
19.1.1 引用对象460
19.1.2 代码模板461
19.1.3 改造代码462
19.2 使用VBA操作Word465
19.2.1 批量替换Word文档465
19.2.2 根据Excel成绩表批量生成Word通知单467
19.2.3 将Word版的简历提取到Excel表471
19.2.4 批量插入图片到Word并创建目录474
19.3 使用VBA操作PPT476
19.3.1 根据明细表和图片自动生成PPT477
19.3.2 批量从PPT中取值到Excel481
第20章 高阶应用10:开发通用插件485
20.1 认识加载宏485
20.1.1 加载宏的特点485
20.1.2 为什么使用加载宏486
20.1.3 加载项管理器487
20.1.4 加载内置的加载项487
20.1.5 安装与卸载自定义加载宏487
20.1.6 开发加载宏应选哪种格式488
20.1.7 安装加载宏后如何引用其数488
20.1.8 设计加载宏的附加工作488
20.2 开发合并工作表插件489
20.2.1 确认程序需具备的功能489
20.2.2 设计窗489
20.2.3 生成窗体代码490
20.2.4 设计功能区菜单492
20.2.5 安装插件并测试功能494
20.3 开发批量打印标签插件496
20.3.1 确认程序需具备的功能496
20.3.2 设计模板496
20.3.3 编写代码496
20.3.4 设计功能区菜单499
20.3.5 安装插件并测试功能500
|
內容試閱:
|
自序
如何学习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 高级用户而言,这些知识都是不可或缺的,掌握这些知识后才能开发出中大型的、高效的程序。
本书特点
相对于同类书籍,本书在内容编排上具有以下特点。
除了对VBA 的基础语法与常见对象的综合应用进行介绍,本书还重点展示了如何开发一
个独立的、完善的、拥有专用菜单的通用程序。
通过本书,你可以编写出自己的专业插件,还能通过这些插件大幅度提升工作效率,让以往
可能需要几十分钟的工作量在几秒钟内即可完成。
本书基于Excel 2019 写作,但是代码可在Excel 2010、Excel 2013 和Excel 2016 中通用。
由于Excel 2003 已经被淘汰了,因此本书不再讲述传统菜单的设计方法,而是重点讲述功能区的开发思路,并提供若干功能区模板,从而让你可以快速设计功能区组件。
本书比较注重代码的通用性和效率,总结了多条优化代码的规则。正则表达式可以强化VBA 的字符处理能力。本书详细地阐述了正则表达式的调用方法、
语法,并提供了大量案例与思路,这在所有VBA 书籍中是独一无二的。
本书提供了诸多通用型的工具设计思路和源代码,例如,全自动汇总工作簿、批量拆分
工作簿、批量合并工作表、批量打印标签等。你可以借用这些案例的思路开发出更多的小工具,从而提升工作效率。
附赠资源
本书附赠资源中含了三方面内容:案例源文件和案例源代码,以及案例演示视频。
安全源文件
提供所有案例对应的素材文件,你可以直接下载和使用,省去手工模拟数据的时间。
案例源代码
本书所有的案例源代码都有详细的说明,有助于你理解。在学习中千万不要抄写代码,尽量
直接使用现成的代码和源文件去练习,避免抄写错误导致测试不成功,浪费大量时间。
案例演示视频
附赠资源中还包含了100 多个mp4 格式的案例演示视频。操作步骤较多的案例都搭配了视频演示过程,方便你学习和理解,可以更快地掌握操作方法。对于那些单击菜单即可完成的案例则没有相应的视频。
适合读者群
本书对VBA 的基础知识有比较详尽地介绍,并提供了大量的案例引导读者逐步深入学习。
适合阅读本书的读者包括三类:
VBA 初学者,通过本书能够踏入VBA 的门槛。已有VBA 基础但需要扩充知识面者。本书涉及的VBA 知识相当全面,包含了学习VBA
必需掌握的基础知识,也提供了正则表达式、注册表和功能区设计等边缘性知识,从而让你对VBA 掌握得更全面。
本书还提供代码优化的诸多规则,掌握这些规则可让程序具有更强的通用性和执行效率。
3.对VBA 已有相当多的认识,但想开发更专业的插件者。本书对开发加载宏有详细的阐述。
|
|