编辑推荐
与众不同,独树一帜;读者视角,全新解读。
每一个疑难案例,都源于网友现实的疑惑和困扰;
每一个解决案例,皆来自高手精妙的思路和讲解。
《Excel 2013 VBA编程与实践》读者对象包含两类:一:工作中涉及大量数据运算的用户,通过VBA可以简化操作步骤,提升运算效率。工作中数据越多越能体现本书的优势。二:有VBA基础想进一步提升VBA开发技术者。本书涉及VBA开发的方方面面,可为VBA爱好者提供更多的开发思路。
海报:
内容简介
《Excel 2013 VBA编程与实践》为读者展示Excel VBA编程的实战技巧,包括工作中最常用的查询、定位、格式转换、报表拆分与合并、开发自定义函数、处理文件与文件夹、功能区设计,以及插件开发实战与原理分析。本书侧重于解决问题和展示解题思路,案例包含诸多常见疑难的解决方案。阅读本书后,读者可以解决工作中的诸多疑难杂症,大大提高工作效率,且有助于提升编程能力,拓展思路,将理论向实战迈进。
好的代码应该同时具备准确、纠错、兼容和效率四个特性,本书所有的案例都在准确性与高效性的基础上提供完善的错误处理措施与思路讲解。
《Excel 2013 VBA编程与实践》包括205个实用案例和一个大型综合应用――开发送货单套打程序系统。书中的每个案例采取疑难描述、解决方案、操作方法、原理分析和知识扩展五个步骤进行讲解,力图在解决问题的同时让读者可以通晓其思路和原理。
读者在学习本书的同时,如果配合VBA入门图书《来吧,带你玩转Excel VBA》或者《Excel VBA程序开发自学宝典(第3版)》学习,将会取得更好的效果。另外,本书附赠了书中所有的案例文件与源代码,读者可到网上下载学习。
作者简介
黄朝阳,网名apolloh,ExcelTip.net站长,微软全球最有价值专家(MVP)。拥有十多年丰富的企业信息化实践和管理经验,精通Excel和MS SQL在企业中的应用。早期曾在多个Office技术社区担任版主,参与过多部Excel畅销书的编著工作。
罗刚君,网名andysky,ExcelTip.net技术社区版主,多个Office技术社区资深版主,从事Excel软件研究与写作多年,精通Excel VBA与函数、图表。在公司担任电脑技术管理,对办公应用有较丰富的实战经验和心得。目前已经出版过13部Excel相关著作。
章兰新,网名zlxtl,ExcelTip.net技术社区版主,多个Office技术社区资深版主,
拥有十多年丰富的政府信息化实践、管理和组织实施经验,精通Excel和MSSQL在管理中的应用。长期在政府财政经济部门实施电脑技术与管理、统计、数据分析相融合的工作,一直致力于推广Excel和数据库技术,对办公应用有极丰富的实战经验和心得。
陈国良,网名gouweicao78,微软全球最有价值专家(MVP),ExcelTip.net技术社区总版主,多个Office技术社区资深版主,从事公路、铁路工程建设管理十多年,精通Excel函数与公式,具有丰富的实战经验,参与过多部Excel畅销书的编著工作。
目录
第1章 基础理论 1
1.1 变量、常量与数据类型 1
疑难1 正确地定义变量和数据类型有何优势 1
数据类型与对象类型 5
疑难2 公共变量和静态变量都有何用处 6
1.2 程序防错要点 8
疑难3 常见的代码错误由哪些原因造成 8
疑难4 如何侦测代码出错,并将运行代码的错误原因发给作者 12
疑难5 如何开发完善的程序 14
1.3 练习与思考 18
第2章 数据查找技巧 19
2.1 快速查找 19
疑难6 能否按范围批量查找数值 19
疑难7 能否将符合多条件之一的所有数据提取到新表中 22
判断工作表是否存在的方法 23
疑难8 可否按格式查找单元格,然后替换其格式 25
FindFormat的使用技巧 26
疑难9 如何找出A线的不达标人员信息 27
单列多条件与多列多条件筛选的区别 29
疑难10 如何查找所有的“#”并标识为上标 29
定位单元格任意字符的方法 30
疑难11 如何找出还款时间超过一年及未还款的客户信息 31
日期函数Datedif的特性 32
疑难12 可以将查找到的所有数据串连并写入剪贴板中吗 33
疑难13 可以创建一个工具栏来方便查找吗 35
如何区分精确匹配与模糊匹配 37
疑难14 能否按相似度查找所有的数据 37
利用Array向区域中一次性写入多个常量 39
疑难15 如何在具有合并单元格的区域中多条件逐步查找 40
通过“MergeArea”属性返回合并区域 41
疑难16 如何查找成绩并分批发送邮件 42
VBA中邮件正文的换行符表示法 43
疑难17 如何在输入时逐步查找 44
通过KeyUp事件自动执行查询 46
2.2 跨表查找内容 47
疑难18 能否将所有表中的完成目标者汇总到“总表” 47
利用SpecialCells定位实现快速查找 48
疑难19 查找每月产量冠军名单,在窗体中罗列显示 49
不采用循环,一次性找出最大值所在行 50
疑难20 如何找出工作簿中所有的外部链接且将它们转换成值 51
如何获取工作簿中的外部链接 52
疑难21 可否模糊查找所有部门的电话信息 52
Target与Activecell的区别 54
疑难22 如何实现将所有未收货款者在状态栏随机显示 54
利用OnTime定时执行程序 56
疑难23 可否在单元格中创建多级下拉菜单 56
ActionControl对象的功能与限制 60
疑难24 可否在文件夹的所有文件中查找特定信息并汇总到新表 60
疑难25 如何统计文件夹中所有的成绩工作簿中不及格人数 64
调用工作表函数时应如何书写区域引用型参数 65
2.3 文件查找与转换 66
疑难26 如何判断指定的文件是否存在 66
判断文件是否存在的函数 67
疑难27 如何进行深度查找且创建文件目录 68
疑难28 可否在工作表中罗列出所有大于5MB的文件 70
疑难29 如何将所有的Word文件转换成PDF文件 72
疑难30 如何将xlsm和xlsx格式的所有文件转换成xls格式 76
疑难31 如何在网上邻居的共享盘中查找并打开“单价表” 78
疑难32 如何实现全盘查找且播放音乐文件 79
疑难33 能否在文件夹的所有工作簿中执行批量替换 81
疑难34 能否根据成绩表和模板生成Word成绩通知单 84
2.4 图片查找与引用 87
疑难35 如何瞬间删除当前表中艺术字和图表等以外的图片 87
DrawingObjects与Shapes对象的区别 89
疑难36 可以将签名图片复制到表中所有的签名处吗 89
复制图形对象与复制数据的区别 90
Selection代表什么 90
疑难37 如何像vlookup引用数据一样引用图片 91
循环弹出对话框直接到用户正确操作为止的编程思路 93
疑难38 能否对材料表分页且调用材料图片 94
2.5 练习与思考 97
第3章 数据处理 98
3.1 按条件定位的技巧 98
疑难39 如何一次性定位产量大于1000的所有单元格 98
使用定位技术减少循环语句的循环次数 99
疑难40 可否全选至少三科不及格的学生姓名 100
通过SpecialCells定位错误值 103
疑难41 工作表中所有的错误值是否可隐藏起来 102
疑难42 能否定位数值区域并转换成以“万”为单位 104
VBA中如何处理双引号 105
疑难43 如何定位当前表的最大值或最小值 105
调用工作表函数并配合Find方法查找最大值 107
疑难44 能否定位并标识高于平均值的单元格 107
VBA中数字、汉字的大小关系 109
疑难45 如何反向选择工作表区域 109
辅助区的重要性 110
3.2 数据处理及格式转换 111
疑难46 能否一键对选区横向、纵向汇总 111
“R1C1”引用方式的优点 112
疑难47 如何将单词在大写、小写与首字母大写间任意切换 113
利用StrConv函数对英文进行大写、小写和首字母大写转换 114
疑难48 如何将二维的材料表转换成一维表 115
使用数组函数Array简化代码 116
疑难49 如何开发一个通用的一维表转二维表的工具 117
对数组和区域中的值去除重复值时的区别 120
疑难50 如何开发一个通用的二维表转一维表的工具 121
疑难51 可否将字符串中的字母、数字和汉字分离到多单元格中 124
利用Like运算符区分汉字、数字和字母 125
疑难52 能否一键转换表达式为计算结果 126
通过Evaluate方法转换表达式 127
疑难53 数据有效性可以设置为关联的三级下拉选单吗 127
疑难54 能否将职工信息按自定义序列排序 130
新旧版本中Sort的差异 131
疑难55 可以不打开工作簿而提取其数据吗 132
在VBA中调用公式实现从未打开的工作表中取值 134
疑难56 可否一键保护所有的公式 134
切换Locked 属性实现公式保护 135
疑难57 如何实现发票金额分解 136
MID取文本的特点 137
疑难58 VBA可以破解工作表密码吗 138
表的分类 139
疑难59 如何将不规范的时间统一为“hh:mm:ss.00”格式 139
Format与Text函数的相同点和不同点 141
疑难60 可以生成指定范围的不重复随机数吗 141
Collection对象的优势 142
疑难61 如何对工作簿减肥 143
文件虚胖的常见原因 144
疑难62 可否让数字在文本与数值之间快速切换 145
在文本与数值间切换的VBA思路 146
疑难63 如何将“/”分隔的数据进行汇总 147
以“/”为分隔符取其左右字符的思路优化 148
疑难64 可否一键删除工作表中所有的空白行 148
SpecialCells方法的限制 150
疑难65 能实现粘贴数据时跳过隐藏区吗 150
如何确定单元格是否被隐藏 153
疑难66 可否让单元格的值真正地四舍五入 153
疑难67 如何对相同值进行标识着色 155
ColorIndex属性的限制对VBA代码的影响 157
疑难68 如何根据工资计算零钞数量 158
获取选区第一列及已用区域的交集 160
疑难69 可否将职工资料表一键转换成打印格式 160
如何计算图片所在单元格的地址 162
3.3 单元格合并技巧 162
疑难70 能否一键合并相同且相邻的所有单元格 162
利用DisplayAlerts属性关闭合并单元格时的提示加快代码执行速度 164
疑难71 如何实现按产品合并产量数据表 164
利用变量暂存数据,代替辅助区 166
疑难72 能否改进“跨越合并”,使其居中保留所有的数据 166
Merge方法的真正功能 167
疑难73 可以合并同类项且分类汇总吗 168
通过选择性粘贴格式实现合并单元格 170
疑难74 如何实现合并时保留所有的数据,而拆分时还原数据 171
看不见的特殊字符的应用 173
疑难75 如何一键选择所有合并的单元格 174
定位合并单元格 175
查找设置对下一次查找结果有何影响 175
疑难76 如何取消所有的合并区域,并对所有的单元格填充数据 175
合并区域的赋值方式 176
疑难77 能否实现撤销合并后能还原所有数据的多单元格合并 177
合并单元格后再取消合并不丢失数据的思路 178
疑难78 如何将指定的单元格合并到一个选区 178
将指定单元格链接到一个选区 180
疑难79 可以让合并单元格自动换行吗 180
工作表簿件代码与普通过程的区别 182
3.4 报表合并与拆分 183
疑难80 如何合并所有工作表的数据到一个表中 183
在复制数据时既去除公式,又不影响数值的显示状态 185
疑难81 如何实现多表合并汇总 185
利用相对引用公式批量合并数据,避免使用循环 187
疑难82 如何将多个工作簿中的所有工作表合并到一个工作表中 187
通过禁用工作簿重算提升代码效率 190
疑难83 如何将多个工作簿数据合并到一个工作簿 190
利用变量作为辅助进行条件判断 194
疑难84 如何实现按条件将单个工作表拆分成多个工作表 194
Range.AutoFilter方法的特殊性 198
疑难85 如何将工作簿中的每个工作表转换为独立工作表 198
在不同的Excel版本中如何选择文件格式 200
3.5 单元格颜色的综合应用 201
疑难86 不同版本的Excel在颜色处理方面有区别吗 201
不同的版本中颜色差异对程序的影响 202
疑难87 可以在Excel 2013中按颜色筛选再做扩展吗 203
CurrentRegion与Usedrange对程序的影响 206
疑难88 如何实现将颜色排序 207
借用辅助区和调用老版本的Sort功能提升程序的通用性 208
疑难89 可以按颜色对选区的数据分类汇总吗 209
修改颜色不触发公式重算和任何VBA事件 211
疑难90 如何用函数对单元格的背景和字体按颜色汇总 212
如何声明可选参数 214
3.6 重复数据处理 214
疑难91 可否清空重复值所在单元格并以背景色标示 214
Countif函数的限制 216
疑难92 可用红圈标示重复出现的数据吗 217
疑难93 如何提取两列数据中的相同项与不同项 219
利用Transpose函数实现区域转数组 220
疑难94 可否一键删除重复行 221
Range.RemoveDuplicates方法中Columns参数的限制 222
3.6 练习与思考 223
第4章 报表打印 224
4.1 打印设置 224
疑难95 如何一次性设置“总表”以外工作表的页脚 224
选择工作表数量对页脚的影响 225
疑难96 可否将所有工作表的打印区域设置为有数据的区域 225
更新打印区域设置的限制 227
疑难97 可否将订单表转换成每10行打印一页 228
全自动批量插入分页符 230
疑难98 如何让跨页的合并单元格在打印后能完整显示 229
判断合并单元格是否跨页 232
4.2 特殊打印格式设计 231
疑难99 如何制作工资条 232
疑难100 如何打印工资卡 234
疑难101 VBA可以实现对工作表分页小计吗 237
利用宏表函数Get.Document(50)获取工作表页数 242
疑难102 如何同时打印顶端标题和底端标题 241
计算第一个分页符所在的行号 249
疑难103 可以借用图片实现底端标题打印吗 248
Export与API方式将区域转换成图片的差异 251
疑难104 可否将订单表转换成适合针式多联打印的报表格式 251
修改CopyObjectsWithCells属性实现复制数据时忽略图形对象 254
疑难105 如何实现双面打印 254
疑难106 可以只打印活动单元格所在页吗 255
如何计算分页符位置和当前页的序号 257
4.3 思考与练习 257
第5章 借用事件让程序自动化 258
5.1 工作表事件 258
疑难107 录入M2和M3时可自动将2或3显示为上标吗 258
Target与ActiveCell的相同与不同点 259
疑难108 可否录入产品规格时自动在右边显示表达式的值 260
修改EnableEvents属性避免事件的连锁反应 261
疑难109 可否实时记录指定区域的修改记录 262
让批注框自动调整大小的必要步骤 264
疑难110 能否双击首行或首列时弹出工作表目录 264
工作表事件与工作簿事件的分别 265
5.2 工作簿事件 266
疑难 111 能否在启动工作簿时自动创建工作表目录 266
Workbook_Open事件与Auto_open宏的相同点和不同点 267
疑难112 进入包含“货款”的工作表时可语音提示未收款客户名称吗 268
DateDiff函数与DateDif函数的相同和不同点 269
疑难113 能否自动记录工作簿的已打印次数 270
BeforePrint事件的缺陷 271
疑难114 输入重复的工号时能否提示“已重复” 271
创建让用户指定执行方式的对话框的三种方法 273
疑难115 能否在状态栏显示选区中的最大值和最小值地址 273
工作表函数Counta的参数应如何对待Range对象的默认属性值 275
5.3 应用程序事件 275
疑难116 可否让新建的工作簿包含“进库”、“出库”和“异常统计”三个工作表 275
借助类实现应用程序级的事件 277
安装加载宏的两种方法 278
疑难117 可否新建图表时默认显示为圆角加阴影效果 279
工作簿级与应用程序级的图表事件差异 280
疑难118 可否选择单元格时整行与整列自动着色 280
引用活动窗口的可见区域 282
5.4 思考与练习 283
第6章 开发自定义函数 284
6.1 自定义函数基础 284
疑难119 如何开发自定义函数 284
如何跨工作簿调用自定义函数 288
疑难120 自定义函数在不同的版本中有何差异 288
颜色对自定义函数的影响 289
函数参数的数量上限 291
疑难121 如何对自定义函数添加功能描述与参数说明 291
通过Application.MacroOptions方法为自定义函数添加参数说明 292
6.2 开发自定义函数 293
疑难122 如何对区域内混杂字符串中的数字求和 293
Excel公式对“+”的处理方式 294
疑难123 如何分离字符串中的数值、英文和汉字 294
正则表达式在字符处理中的优势 295
疑难124 如何将文本混杂字符串及表达式转换为值 296
正则表达式中如何表示数字、字母和汉字范围 297
疑难千寻千解丛书 Excel 2013 VBA编程与实践 下载 mobi epub pdf txt 电子书 格式