中文版Excel 2019高级VBA编程宝典(第9版)
第 I 部分 Excel VBA基础知识
第1章 电子表格应用开发入门 3
1.1 什么是电子表格应用 3
1.2 应用开发的步骤 4
1.3 确定用户的需求 4
1.4 对满足这些需求的应用进行规划 5
1.5 确定适用的用户界面 6
1.5.1 自定义功能区 7
1.5.2 自定义快捷菜单 7
1.5.3 创建快捷键 7
查看完整
第1章 电子表格应用开发入门 3
1.1 什么是电子表格应用 3
1.2 应用开发的步骤 4
1.3 确定用户的需求 4
1.4 对满足这些需求的应用进行规划 5
1.5 确定适用的用户界面 6
1.5.1 自定义功能区 7
1.5.2 自定义快捷菜单 7
1.5.3 创建快捷键 7
查看完整
Michael Alexander是一名微软认证应用程序开发人员(MCAD),著有Microsoft Access和 Microsoft Excel高级业务分析的相关书籍。他在咨询和开发Microsoft Office解决方案方面拥有超过20年的经验。Michael因对Excel社区的持续贡献而被评为Microsoft MVP。可以通过www.datapigtechnologies.com网站与他取得联系。Dick Kusleika是12次Microsoft Excel MVP,与Microsoft Office合作超过20年。Dick为客户开发基于Access和Excel的解决方案,并在美国和澳大利亚举办了Office产品培训研讨会。Dick还在www.dailydoseofexcel.com上撰写与Excel相关的博客。
● 记录简单的宏以及执行其他相关操作
● 动态操作工作簿和工作表
● 自动生成透视表和图表
● 管理外部数据和外部文件
● 从Excel直接发送邮件
● 创建自定义Excel功能区界面
● 开发和发布自定义的Excel加载项
● 动态操作工作簿和工作表
● 自动生成透视表和图表
● 管理外部数据和外部文件
● 从Excel直接发送邮件
● 创建自定义Excel功能区界面
● 开发和发布自定义的Excel加载项
第 I 部分 Excel VBA基础知识
第1章 电子表格应用开发入门 3
1.1 什么是电子表格应用 3
1.2 应用开发的步骤 4
1.3 确定用户的需求 4
1.4 对满足这些需求的应用进行规划 5
1.5 确定适用的用户界面 6
1.5.1 自定义功能区 7
1.5.2 自定义快捷菜单 7
1.5.3 创建快捷键 7
1.5.4 创建自定义对话框 8
1.5.5 在工作表中使用ActiveX控件 8
1.5.6 开始开发工作 9
1.6 关注终用户 10
1.6.1 测试应用 10
1.6.2 应用的安全问题 11
1.6.3 如何让应用程序看起来更简明美观 12
1.6.4 创建用户帮助系统 12
1.6.5 将开发成果归档 13
1.6.6 给用户发布应用程序 13
1.6.7 在必要时对应用进行更新 13
1.7 其他开发问题 14
1.7.1 用户安装的Excel版本 14
1.7.2 语言问题 14
1.7.3 系统速度 14
1.7.4 显示模式 15
第2章 VBA概述 16
2.1 宏录制器 16
2.1.1 创建你的个宏 16
2.1.2 比较宏录制的模式和相对模式 19
2.1.3 关于宏录制的其他概念 22
2.2 Visual Basic编辑器概述 26
2.2.1 了解VBE组件 26
2.2.2 使用工程资源管理器 27
2.2.3 使用代码窗口 29
2.2.4 自定义VBA环境 31
2.2.5 “编辑器格式”选项卡 32
2.2.6 “通用”选项卡 33
2.2.7 “可连接的”选项卡 33
2.3 VBA的基础知识 34
2.3.1 了解对象 34
2.3.2 了解集合 35
2.3.3 了解属性 35
2.3.4 了解方法 37
2.4 使用Range对象 38
2.4.1 找到Range对象的属性 39
2.4.2 Range属性 39
2.4.3 Cells属性 40
2.4.4 Offset属性 42
2.5 需要记住的基本概念 43
2.6 学习更多信息 44
2.6.1 阅读本书剩余的章节 44
2.6.2 让Excel来帮助编写宏 45
2.6.3 使用帮助系统 45
2.6.4 使用对象浏览器 45
2.6.5 从网上获取 46
2.6.6 利用用户论坛 47
2.6.7 访问专家博客 47
2.6.8 通过YouTube查找视频 48
2.6.9 通过Microsoft Office Dev Center获取信息 48
2.6.10 解析其他的Excel文件 48
2.6.11 咨询周围的Excel人才 48
第3章 VBA编程基础 49
3.1 VBA语言元素概览 49
3.2 注释 51
3.3 变量、数据类型和常量 52
3.3.1 定义数据类型 53
3.3.2 声明变量 54
3.3.3 变量的作用域 56
3.3.4 使用常量 58
3.3.5 使用字符串 60
3.3.6 使用日期 60
3.4 赋值语句 61
3.5 数组 63
3.5.1 声明数组 63
3.5.2 声明多维数组 64
3.5.3 声明动态数组 64
3.6 对象变量 64
3.7 用户自定义的数据类型 66
3.8 内置函数 66
3.9 处理对象和集合 69
3.9.1 With-End With结构 69
3.9.2 For Each-Next结构 70
3.10 控制代码的执行 71
3.10.1 GoTo语句 72
3.10.2 If-Then结构 72
3.10.3 Select Case结构 76
3.10.4 指令块的循环 79
第4章 VBA的子过程 86
4.1 关于过程 86
4.1.1 子过程的声明 87
4.1.2 过程的作用域 88
4.2 执行子过程 89
4.2.1 通过“运行子过程/用户窗体”命令执行过程 89
4.2.2 从“宏”对话框执行过程 89
4.2.3 用Ctrl 快捷键组合执行过程 90
4.2.4 从功能区执行过程 91
4.2.5 从自定义快捷菜单中执行过程 91
4.2.6 从另一个过程中执行过程 91
4.2.7 通过单击对象执行过程 95
4.2.8 在事件发生时执行过程 96
4.2.9 从“立即窗口”执行过程 97
4.3 向过程中传递参数 97
4.4 错误处理技术 100
4.4.1 捕获错误 101
4.4.2 错误处理示例 102
4.5 使用子过程的实际示例 104
4.5.1 目标 104
4.5.2 工程需求 105
4.5.3 已经了解的信息 105
4.5.4 解决方法 105
4.5.5 初步的录制工作 106
4.5.6 初始设置 107
4.5.7 代码的编写 108
4.5.8 排序过程的编写 109
4.5.9 更多测试 113
4.5.10 修复问题 113
4.6 实用程序的可用性 116
4.7 对工程进行评估 117
第5章 创建函数过程 118
5.1 子过程与函数过程的比较 118
5.2 为什么创建自定义的函数 119
5.3 自定义函数示例 119
5.3.1 在工作表中使用函数 119
5.3.2 在VBA过程中使用函数 120
5.3.3 分析自定义函数 121
5.4 函数过程 122
5.4.1 函数的作用域 123
5.4.2 执行函数过程 124
5.5 函数过程的参数 126
5.6 函数示例 126
5.6.1 无参数的函数 126
5.6.2 带有一个参数的函数 128
5.6.3 带有两个参数的函数 131
5.6.4 使用数组作为参数的函数 132
5.6.5 带有可选参数的函数 133
5.6.6 返回VBA数组的函数 134
5.6.7 返回错误值的函数 136
5.6.8 带有不定数量参数的函数 138
5.7 模拟Excel的SUM函数 139
5.8 扩展后的日期函数 142
5.9 函数的调试 143
5.10 使用“插入函数”对话框 144
5.10.1 使用MacroOptions方法 144
5.10.2 指定函数类别 146
5.10.3 手动添加函数说明 147
5.11 使用加载项存储自定义函数 148
5.12 使用Windows API 148
5.12.1 Windows API示例 149
5.12.2 确定Windows目录 149
5.12.3 检测Shift键 150
5.12.4 了解有关API函数的更多信息 151
第6章 了解Excel事件 152
6.1 Excel可以监视的事件类型 152
6.1.1 了解事件发生的顺序 153
6.1.2 存放事件处理程序的位置 153
6.1.3 禁用事件 154
6.1.4 输入事件处理代码 155
6.1.5 使用参数的事件处理程序 156
6.2 工作簿级别的事件 157
6.2.1 Open事件 158
6.2.2 Activate事件 159
6.2.3 SheetActivate事件 159
6.2.4 NewSheet事件 159
6.2.5 BeforeSave事件 160
6.2.6 Deactivate事件 160
6.2.7 BeforePrint事件 160
6.2.8 BeforeClose事件 162
6.3 检查工作表事件 163
6.3.1 Change事件 164
6.3.2 监视特定单元格区域的修改 165
6.3.3 SelectionChange事件 169
6.3.4 BeforeDoubleClick事件 170
6.3.5 BeforeRightClick事件 170
6.4 监视应用程序事件 171
6.4.1 启用应用程序级别的事件 172
6.4.2 确定工作簿何时被打开 173
6.4.3 监视应用程序级别的事件 174
6.4.4 访问与对象无关联的事件 174
6.4.5 OnTime事件 174
6.4.6 OnKey事件 176
第7章 VBA编程示例与技巧 179
7.1 通过示例学习 179
7.2 处理单元格区域 179
7.2.1 复制单元格区域 180
7.2.2 移动单元格区域 181
7.2.3 复制大小可变的单元格区域 181
7.2.4 选中或者识别各种类型的单元格区域 182
7.2.5 调整单元格区域大小 184
7.2.6 提示输入单元格中的值 184
7.2.7 在下一个空单元格中输入一个值 186
7.2.8 暂停宏的运行以便获得用户选中的单元格区域 187
7.2.9 计算选中单元格的数目 188
7.2.10 确定选中的单元格区域的类型 189
7.2.11 有效地循环遍历选中的单元格区域 191
7.2.12 删除所有空行 193
7.2.13 任意次数地复制行 194
7.2.14 确定单元格区域是否包含在另一个单元格区域内 195
7.2.15 确定单元格的数据类型 196
7.2.16 读写单元格区域 197
7.2.17 在单元格区域中写入值的更好方法 198
7.2.18 传递一维数组中的内容 200
7.2.19 将单元格区域传递给Variant类型的数组 201
7.2.20 按数值选择单元格 201
7.2.21 复制非连续的单元格区域 203
7.3 处理工作簿和工作表 204
7.3.1 保存所有工作簿 204
7.3.2 保存和关闭所有工作簿 205
7.3.3 隐藏除选区之外的区域 205
7.3.4 创建超链接内容表 206
7.3.5 同步工作表 207
7.4 VBA技巧 208
7.4.1 切换布尔类型的属性值 208
7.4.2 显示日期和时间 209
7.4.3 显示友好时间 210
7.4.4 获得字体列表 211
7.4.5 对数组进行排序 213
7.4.6 处理一系列文件 213
7.5 用于代码中的一些有用函数 215
7.5.1 FileExists函数 215
7.5.2 FileNameOnly函数 216
7.5.3 PathExists函数 216
7.5.4 RangeNameExists函数 216
7.5.5 SheetExists函数 217
7.5.6 WorkbookIsOpen函数 217
7.5.7 检索已经关闭的工作簿中的值 218
7.6 一些有用的工作表函数 220
7.6.1 返回单元格的格式信息 220
7.6.2 会说话的工作表 221
7.6.3 显示保存或打印文件的时间 221
7.6.4 理解对象的父对象 222
7.6.5 计算介于两个值之间的单元格数目 223
7.6.6 确定行或列中后一个非空的单元格 224
7.6.7 字符串与模式匹配 225
7.6.8 从字符串中提取第n个元素 226
7.6.9 拼写出数字 227
7.6.10 多功能函数 228
7.6.11 SHEETOFFSET函数 228
7.6.12 返回所有工作表中的值 229
7.6.13 返回没有重复随机整数元素的数组 230
7.6.14 随机化单元格区域 232
7.6.15 对单元格区域进行排序 233
7.7 Windows API调用 234
7.7.1 理解API声明 234
7.7.2 确定文件的关联性 235
7.7.3 确定默认打印机的信息 236
7.7.4 确定视频显示器的信息 237
7.7.5 读写注册表 238
第 II 部分 高级VBA技术
第8章 使用透视表 243
8.1 数据透视表示例 243
8.1.1 创建数据透视表 244
8.1.2 检查录制的数据透视表代码 245
8.1.3 整理录制的数据透视表代码 246
8.2 创建更复杂的数据透视表 248
8.2.1 创建数据透视表的代码 249
8.2.2 更复杂数据透视表的工作原理 250
8.3 创建多个数据透视表 251
8.4 创建转换的数据透视表 254
第9章 使用图表 257
9.1 关于图表 257
9.1.1 图表的位置 257
9.1.2 宏录制器和图表 258
9.1.3 Chart对象模型 258
9.2 创建嵌入式图表 259
9.3 在图表工作表上创建图表 261
9.4 修改图表 261
9.5 使用VBA激活图表 262
9.6 移动图表 262
9.7 使用VBA使图表取消激活 264
9.8 确定图表是否被激活 264
9.9 从ChartObjects或Charts集合中删除图表 264
9.10 循环遍历所有图表 265
9.11 调整ChartObjects对象的大小并对齐 267
9.12 创建大量图表 268
9.13 导出图表 271
9.14 修改图表中使用的数据 272
9.14.1 基于活动单元格修改图表数据 273
9.14.2 用VBA确定图表中使用的单元格区域 274
9.15 使用VBA在图表上显示任意数据标签 277
9.16 在用户窗体中显示图表 279
9.17 理解图表事件 281
9.17.1 使用图表事件的一个示例 282
9.17.2 为嵌入式图表启用事件 284
9.17.3 示例:在嵌入式图表上使用图表事件 285
9.18 VBA制图技巧 287
9.18.1 在整个页面上打印嵌入式图表 287
9.18.2 创建未链接的图表 287
9.18.3 用MouseOver事件显示文本 289
9.18.4 滚动图表 291
9.19 使用迷你图 292
第10章 与其他应用程序的交互 296
10.1 了解Microsoft Office自动化 296
10.1.1 了解“绑定”概念 296
10.1.2 一个简单的自动化示例 298
10.2 从Excel中自动执行Access任务 299
10.2.1 从Excel中运行Access查询 299
10.2.2 从Excel运行Access宏 300
10.3 从Excel自动执行Word任务 301
10.3.1 将Excel数据传递给Word文档 301
10.3.2 模拟Word文档的邮件合并功能 302
10.4 从Excel自动执行PowerPoint任务 304
10.4.1 将Excel数据发送到PowerPoint演示文稿中 304
10.4.2 将所有Excel图表发送到PowerPoint演示文稿中 305
10.4.3 将工作表转换成PowerPoint演示文稿 307
10.5 从Excel自动执行Outlook任务 308
10.5.1 以附件形式发送活动工作簿 308
10.5.2 以附件形式发送指定单元格区域 309
10.5.3 以附件形式发送指定的单个工作表 310
10.5.4 发送给联系人列表中的所有Email地址 311
10.6 从Excel启动其他应用程序 312
10.6.1 使用VBA的Shell函数 313
10.6.2 使用Windows的ShellExecute API函数 315
10.6.3 使用AppActivate语句 316
10.6.4 激活“控制面板”对话框 317
第11章 处理外部数据和文件 318
11.1 处理外部数据连接 318
11.2 Power Query基础介绍 318
11.2.1 了解查询步骤 323
11.2.2 刷新Power Query数据 324
11.2.3 管理已有的查询 324
11.2.4 使用VBA创建动态连接 325
11.2.5 遍历工作簿中的所有连接 327
11.3 使用ADO和VBA来提取外部数据 328
11.3.1 连接字符串 328
11.3.2 声明记录集 329
11.3.3 引用ADO对象库 330
11.3.4 以编程方式使用ADO连接Access 331
11.3.5 对活动工作簿使用ADO 332
11.4 处理文本文件 334
11.4.1 打开文本文件 334
11.4.2 读取文本文件 335
11.4.3 编写文本文件 335
11.4.4 获取文件序号 335
11.4.5 确定或设置文件位置 335
11.4.6 读写语句 336
11.5 文本文件操作示例 336
11.5.1 导入文本文件的数据 336
11.5.2 将单元格区域的数据导出到文本文件 337
11.5.3 将文本文件的内容导出到单元格区域 338
11.5.4 记录Excel日志的用法 339
11.5.5 筛选文本文件 339
11.6 执行常见的文件操作 340
11.6.1 使用与VBA文件相关的指令 341
11.6.2 使用FileSystemObject对象 345
11.7 压缩和解压缩文件 347
11.7.1 压缩文件 347
11.7.2 解压缩文件 348
第 III 部分 操作用户窗体
第12章 使用自定义对话框 353
12.1 创建用户窗体之前需要了解的内容 353
12.2 使用输入框 353
12.2.1 VBA的InputBox函数 353
12.2.2 Excel的InputBox方法 356
12.3 VBA的MsgBox函数 359
12.4 Excel的GetOpenFilename方法 363
12.5 Excel的GetSaveAsFilename方法 366
12.6 提示输入目录名称 366
12.7 显示Excel的内置对话框 367
12.8 显示数据记录单 369
12.8.1 使得数据记录单变得可以访问 369
12.8.2 通过使用VBA来显示数据记录单 370
第13章 用户窗体概述 371
13.1 Excel如何处理自定义对话框 371
13.2 插入新的用户窗体 372
13.3 向用户窗体中添加控件 372
13.4 “工具箱”中的控件 373
13.4.1 复选框 373
13.4.2 组合框 374
13.4.3 命令按钮 374
13.4.4 框架 374
13.4.5 图像 374
13.4.6 标签 375
13.4.7 列表框 375
13.4.8 多页 375
13.4.9 选项按钮 375
13.4.10 RefEdit 375
13.4.11 滚动条 375
13.4.12 数值调节钮 375
13.4.13 TabStrip 375
13.4.14 文本框 376
13.4.15 切换按钮 376
13.5 调整用户窗体的控件 377
13.6 调整控件的属性 378
13.6.1 使用“属性”窗口 378
13.6.2 共同属性 379
13.6.3 满足键盘用户的需求 381
13.7 显示用户窗体 383
13.7.1 调整显示位置 384
13.7.2 显示非模态的用户窗体 384
13.7.3 显示基于变量的用户窗体 384
13.7.4 加载用户窗体 384
13.7.5 关于事件处理程序 385
13.8 关闭用户窗体 385
13.9 创建用户窗体的示例 386
13.9.1 创建用户窗体 386
13.9.2 编写代码显示对话框 389
13.9.3 测试对话框 390
13.9.4 添加事件处理程序 391
13.9.5 完成对话框 392
13.9.6 了解事件 392
13.9.7 数值调节钮的事件 394
13.9.8 数值调节钮与文本框配套使用 395
13.10 引用用户窗体的控件 397
13.11 自定义“工具箱” 399
13.11.1 在“工具箱”中添加新页 399
13.11.2 自定义或组合控件 399
13.11.3 添加新的ActiveX控件 400
13.12 创建用户窗体的模板 401
13.13 用户窗体问题检测列表 402
第14章 用户窗体示例 403
14.1 创建用户窗体式菜单 403
14.1.1 在用户窗体中使用命令按钮 403
14.1.2 在用户窗体中使用列表框 404
14.2 从用户窗体选中单元格区域 405
14.3 创建欢迎界面 407
14.4 禁用用户窗体的关闭按钮 408
14.5 改变用户窗体的大小 409
14.6 在用户窗体中缩放和滚动工作表 411
14.7 列表框技巧 412
14.7.1 向列表框控件中添加条目 413
14.7.2 确定列表框中选中的条目 417
14.7.3 确定列表框中的多个选中条目 417
14.7.4 单个列表框中的多个列表 418
14.7.5 列表框条目的转移 419
14.7.6 在列表框中移动条目 420
14.7.7 使用多列的列表框控件 422
14.7.8 使用列表框选中工作表中的行 423
14.7.9 使用列表框激活工作表 425
14.7.10 通过文本框来筛选列表框 428
14.8 在用户窗体中使用多页控件 429
14.9 使用外部控件 431
14.10 使标签动画化 433
第15章 高级用户窗体技术 436
15.1 非模态对话框 436
15.2 显示进度条 439
15.2.1 创建独立的进度条 440
15.2.2 集成到用户窗体中的进度条 444
15.2.3 创建非图形化进度条 447
15.3 创建向导 448
15.3.1 为向导设置多页控件 449
15.3.2 在向导用户窗体中添加按钮 450
15.3.3 编写向导按钮的程序 450
15.3.4 编写向导中的相关代码 451
15.3.5 使用向导执行任务 453
15.4 模仿MsgBox函数 454
15.4.1 模仿MsgBox函数:MyMsgBox函数的代码 455
15.4.2 MyMsgBox函数的工作原理 456
15.4.3 使用MyMsgBox函数 457
15.5 带有可移动控件的用户窗体 457
15.6 没有标题栏的用户窗体 459
15.7 使用用户窗体模拟工具栏 460
15.8 使用用户窗体来模仿任务面板 462
15.9 可调整大小的用户窗体 463
15.10 用一个事件处理程序处理多个用户窗体控件 466
15.11 在用户窗体中选择颜色 468
15.12 在用户窗体中显示图表 470
15.12.1 将图表保存为GIF文件 471
15.12.2 更改图像控件的Picture属性 471
15.13 使用户窗体半透明 471
15.14 用户窗体上的数字推盘 473
15.15 用户窗体上的电动扑克 474
第 IV 部分 开发Excel应用程序
第16章 创建和使用加载项 477
16.1 什么是加载项 477
16.1.1 加载项与标准工作簿的比较 477
16.1.2 创建加载项的原因 478
16.2 理解Excel的加载项管理器 480
16.3 创建加载项 481
16.4 加载项示例 482
16.4.1 为加载项示例添加描述信息 483
16.4.2 创建加载项 483
16.4.3 安装加载项 484
16.4.4 测试加载项 485
16.4.5 发布加载项 485
16.4.6 修改加载项 485
16.5 比较XLAM和XLSM文件 486
16.5.1 XLAM文件中的VBA集合成员 486
16.5.2 XLSM和XLAM文件的可见性 487
16.5.3 XLSM和XLAM文件的工作表和图表工作表 487
16.5.4 访问加载项中的VBA过程 488
16.6 用VBA操作加载项 491
16.6.1 向AddIns集合中添加项 491
16.6.2 从AddIns集合中删除项 492
16.6.3 AddIn对象属性 492
16.6.4 作为工作簿访问加载项 495
16.6.5 AddIn对象事件 496
16.7 优化加载项的性能 496
16.8 加载项的特殊问题 497
16.8.1 确保加载项已经安装 497
16.8.2 从加载项中引用其他文件 499
第17章 使用功能区 500
17.1 功能区基础 500
17.2 自定义功能区 501
17.2.1 向功能区中添加按钮 502
17.2.2 向快速访问工具栏中添加按钮 504
17.2.3 自定义功能区的局限性 505
17.3 创建自定义的功能区 505
17.3.1 将按钮添加到现有的选项卡中 506
17.3.2 向已有的选项卡中添加复选框 510
17.3.3 功能区控件演示 513
17.3.4 dynamicMenu控件示例 520
17.3.5 关于自定义功能区的其他内容 522
17.4 VBA和功能区 523
17.4.1 访问功能区控件 523
17.4.2 使用功能区 524
17.4.3 激活选项卡 526
17.5 创建老式工具栏 526
17.5.1 老式工具栏的局限性 526
17.5.2 创建工具栏的代码 526
第18章 使用快捷菜单 529
18.1 命令栏简介 529
18.1.1 命令栏的类型 529
18.1.2 列出快捷菜单 530
18.1.3 引用命令栏 531
18.2 引用命令栏中的控件 531
18.3 命令栏控件的属性 532
18.4 显示所有的快捷菜单项 533
18.5 使用VBA自定义快捷菜单 534
18.6 重置快捷菜单 536
18.6.1 禁用快捷菜单 537
18.6.2 禁用快捷菜单项 538
18.6.3 向“单元格”快捷菜单中添加一个新项 538
18.6.4 向快捷菜单添加一个子菜单 540
18.6.5 将快捷菜单限制到单个工作簿 542
18.7 快捷菜单与事件 542
18.7.1 自动添加和删除菜单 542
18.7.2 禁用或隐藏快捷菜单项 543
18.7.3 创建一个上下文相关的快捷菜单 543
第19章 为应用程序提供帮助 546
19.1 Excel应用程序的“帮助” 546
19.2 使用Excel组件的帮助系统 548
19.2.1 为帮助系统使用单元格批注 548
19.2.2 为帮助系统使用文本框 549
19.2.3 使用工作表来显示帮助文本 550
19.2.4 在用户窗体中显示帮助信息 551
19.3 在Web浏览器中显示“帮助” 554
19.3.1 使用HTML文件 554
19.3.2 使用一个MHTML文件 555
19.4 使用HTML帮助系统 556
19.4.1 使用Help方法来显示HTML帮助信息 557
19.4.2 将“帮助”文件与应用程序相关联 558
19.4.3 将一个帮助主题与一个VBA函数相关联 558
第20章 理解类模块 560
20.1 什么是类模块 560
20.1.1 内置的类模块 561
20.1.2 自定义类模块 561
20.2 创建NumLock类 562
20.2.1 插入类模块 562
20.2.2 给类模块添加VBA代码 563
20.2.3 使用CNumLock类 564
20.3 属性、方法和事件编程 565
20.3.1 对象属性编程 565
20.3.2 对象的方法编程 566
20.3.3 类模块事件 567
20.4 QueryTable事件 567
20.5 创建存储类的类 570
20.5.1 创建CSalesRep和CSalesReps类 570
20.5.2 创建CInvoice和CInvoices类 572
20.5.3 用对象填充父类 573
20.5.4 计算佣金 574
第21章 兼容性问题 576
21.1 什么是兼容性 576
21.2 兼容性问题的类型 577
21.3 避免使用新功能 578
21.4 在Mac机器上是否可用 579
21.5 处理64位Excel 580
21.6 创建一个国际化应用程序 581
21.7 多语言应用程序 582
21.8 VBA语言的考虑 583
21.9 使用本地属性 583
21.10 系统设置识别 584
21.11 日期和时间设置 586
附录A VBA语句和函数引用 587
A.1 VBA语句 587
A.2 函数 590
^ 收 起
第1章 电子表格应用开发入门 3
1.1 什么是电子表格应用 3
1.2 应用开发的步骤 4
1.3 确定用户的需求 4
1.4 对满足这些需求的应用进行规划 5
1.5 确定适用的用户界面 6
1.5.1 自定义功能区 7
1.5.2 自定义快捷菜单 7
1.5.3 创建快捷键 7
1.5.4 创建自定义对话框 8
1.5.5 在工作表中使用ActiveX控件 8
1.5.6 开始开发工作 9
1.6 关注终用户 10
1.6.1 测试应用 10
1.6.2 应用的安全问题 11
1.6.3 如何让应用程序看起来更简明美观 12
1.6.4 创建用户帮助系统 12
1.6.5 将开发成果归档 13
1.6.6 给用户发布应用程序 13
1.6.7 在必要时对应用进行更新 13
1.7 其他开发问题 14
1.7.1 用户安装的Excel版本 14
1.7.2 语言问题 14
1.7.3 系统速度 14
1.7.4 显示模式 15
第2章 VBA概述 16
2.1 宏录制器 16
2.1.1 创建你的个宏 16
2.1.2 比较宏录制的模式和相对模式 19
2.1.3 关于宏录制的其他概念 22
2.2 Visual Basic编辑器概述 26
2.2.1 了解VBE组件 26
2.2.2 使用工程资源管理器 27
2.2.3 使用代码窗口 29
2.2.4 自定义VBA环境 31
2.2.5 “编辑器格式”选项卡 32
2.2.6 “通用”选项卡 33
2.2.7 “可连接的”选项卡 33
2.3 VBA的基础知识 34
2.3.1 了解对象 34
2.3.2 了解集合 35
2.3.3 了解属性 35
2.3.4 了解方法 37
2.4 使用Range对象 38
2.4.1 找到Range对象的属性 39
2.4.2 Range属性 39
2.4.3 Cells属性 40
2.4.4 Offset属性 42
2.5 需要记住的基本概念 43
2.6 学习更多信息 44
2.6.1 阅读本书剩余的章节 44
2.6.2 让Excel来帮助编写宏 45
2.6.3 使用帮助系统 45
2.6.4 使用对象浏览器 45
2.6.5 从网上获取 46
2.6.6 利用用户论坛 47
2.6.7 访问专家博客 47
2.6.8 通过YouTube查找视频 48
2.6.9 通过Microsoft Office Dev Center获取信息 48
2.6.10 解析其他的Excel文件 48
2.6.11 咨询周围的Excel人才 48
第3章 VBA编程基础 49
3.1 VBA语言元素概览 49
3.2 注释 51
3.3 变量、数据类型和常量 52
3.3.1 定义数据类型 53
3.3.2 声明变量 54
3.3.3 变量的作用域 56
3.3.4 使用常量 58
3.3.5 使用字符串 60
3.3.6 使用日期 60
3.4 赋值语句 61
3.5 数组 63
3.5.1 声明数组 63
3.5.2 声明多维数组 64
3.5.3 声明动态数组 64
3.6 对象变量 64
3.7 用户自定义的数据类型 66
3.8 内置函数 66
3.9 处理对象和集合 69
3.9.1 With-End With结构 69
3.9.2 For Each-Next结构 70
3.10 控制代码的执行 71
3.10.1 GoTo语句 72
3.10.2 If-Then结构 72
3.10.3 Select Case结构 76
3.10.4 指令块的循环 79
第4章 VBA的子过程 86
4.1 关于过程 86
4.1.1 子过程的声明 87
4.1.2 过程的作用域 88
4.2 执行子过程 89
4.2.1 通过“运行子过程/用户窗体”命令执行过程 89
4.2.2 从“宏”对话框执行过程 89
4.2.3 用Ctrl 快捷键组合执行过程 90
4.2.4 从功能区执行过程 91
4.2.5 从自定义快捷菜单中执行过程 91
4.2.6 从另一个过程中执行过程 91
4.2.7 通过单击对象执行过程 95
4.2.8 在事件发生时执行过程 96
4.2.9 从“立即窗口”执行过程 97
4.3 向过程中传递参数 97
4.4 错误处理技术 100
4.4.1 捕获错误 101
4.4.2 错误处理示例 102
4.5 使用子过程的实际示例 104
4.5.1 目标 104
4.5.2 工程需求 105
4.5.3 已经了解的信息 105
4.5.4 解决方法 105
4.5.5 初步的录制工作 106
4.5.6 初始设置 107
4.5.7 代码的编写 108
4.5.8 排序过程的编写 109
4.5.9 更多测试 113
4.5.10 修复问题 113
4.6 实用程序的可用性 116
4.7 对工程进行评估 117
第5章 创建函数过程 118
5.1 子过程与函数过程的比较 118
5.2 为什么创建自定义的函数 119
5.3 自定义函数示例 119
5.3.1 在工作表中使用函数 119
5.3.2 在VBA过程中使用函数 120
5.3.3 分析自定义函数 121
5.4 函数过程 122
5.4.1 函数的作用域 123
5.4.2 执行函数过程 124
5.5 函数过程的参数 126
5.6 函数示例 126
5.6.1 无参数的函数 126
5.6.2 带有一个参数的函数 128
5.6.3 带有两个参数的函数 131
5.6.4 使用数组作为参数的函数 132
5.6.5 带有可选参数的函数 133
5.6.6 返回VBA数组的函数 134
5.6.7 返回错误值的函数 136
5.6.8 带有不定数量参数的函数 138
5.7 模拟Excel的SUM函数 139
5.8 扩展后的日期函数 142
5.9 函数的调试 143
5.10 使用“插入函数”对话框 144
5.10.1 使用MacroOptions方法 144
5.10.2 指定函数类别 146
5.10.3 手动添加函数说明 147
5.11 使用加载项存储自定义函数 148
5.12 使用Windows API 148
5.12.1 Windows API示例 149
5.12.2 确定Windows目录 149
5.12.3 检测Shift键 150
5.12.4 了解有关API函数的更多信息 151
第6章 了解Excel事件 152
6.1 Excel可以监视的事件类型 152
6.1.1 了解事件发生的顺序 153
6.1.2 存放事件处理程序的位置 153
6.1.3 禁用事件 154
6.1.4 输入事件处理代码 155
6.1.5 使用参数的事件处理程序 156
6.2 工作簿级别的事件 157
6.2.1 Open事件 158
6.2.2 Activate事件 159
6.2.3 SheetActivate事件 159
6.2.4 NewSheet事件 159
6.2.5 BeforeSave事件 160
6.2.6 Deactivate事件 160
6.2.7 BeforePrint事件 160
6.2.8 BeforeClose事件 162
6.3 检查工作表事件 163
6.3.1 Change事件 164
6.3.2 监视特定单元格区域的修改 165
6.3.3 SelectionChange事件 169
6.3.4 BeforeDoubleClick事件 170
6.3.5 BeforeRightClick事件 170
6.4 监视应用程序事件 171
6.4.1 启用应用程序级别的事件 172
6.4.2 确定工作簿何时被打开 173
6.4.3 监视应用程序级别的事件 174
6.4.4 访问与对象无关联的事件 174
6.4.5 OnTime事件 174
6.4.6 OnKey事件 176
第7章 VBA编程示例与技巧 179
7.1 通过示例学习 179
7.2 处理单元格区域 179
7.2.1 复制单元格区域 180
7.2.2 移动单元格区域 181
7.2.3 复制大小可变的单元格区域 181
7.2.4 选中或者识别各种类型的单元格区域 182
7.2.5 调整单元格区域大小 184
7.2.6 提示输入单元格中的值 184
7.2.7 在下一个空单元格中输入一个值 186
7.2.8 暂停宏的运行以便获得用户选中的单元格区域 187
7.2.9 计算选中单元格的数目 188
7.2.10 确定选中的单元格区域的类型 189
7.2.11 有效地循环遍历选中的单元格区域 191
7.2.12 删除所有空行 193
7.2.13 任意次数地复制行 194
7.2.14 确定单元格区域是否包含在另一个单元格区域内 195
7.2.15 确定单元格的数据类型 196
7.2.16 读写单元格区域 197
7.2.17 在单元格区域中写入值的更好方法 198
7.2.18 传递一维数组中的内容 200
7.2.19 将单元格区域传递给Variant类型的数组 201
7.2.20 按数值选择单元格 201
7.2.21 复制非连续的单元格区域 203
7.3 处理工作簿和工作表 204
7.3.1 保存所有工作簿 204
7.3.2 保存和关闭所有工作簿 205
7.3.3 隐藏除选区之外的区域 205
7.3.4 创建超链接内容表 206
7.3.5 同步工作表 207
7.4 VBA技巧 208
7.4.1 切换布尔类型的属性值 208
7.4.2 显示日期和时间 209
7.4.3 显示友好时间 210
7.4.4 获得字体列表 211
7.4.5 对数组进行排序 213
7.4.6 处理一系列文件 213
7.5 用于代码中的一些有用函数 215
7.5.1 FileExists函数 215
7.5.2 FileNameOnly函数 216
7.5.3 PathExists函数 216
7.5.4 RangeNameExists函数 216
7.5.5 SheetExists函数 217
7.5.6 WorkbookIsOpen函数 217
7.5.7 检索已经关闭的工作簿中的值 218
7.6 一些有用的工作表函数 220
7.6.1 返回单元格的格式信息 220
7.6.2 会说话的工作表 221
7.6.3 显示保存或打印文件的时间 221
7.6.4 理解对象的父对象 222
7.6.5 计算介于两个值之间的单元格数目 223
7.6.6 确定行或列中后一个非空的单元格 224
7.6.7 字符串与模式匹配 225
7.6.8 从字符串中提取第n个元素 226
7.6.9 拼写出数字 227
7.6.10 多功能函数 228
7.6.11 SHEETOFFSET函数 228
7.6.12 返回所有工作表中的值 229
7.6.13 返回没有重复随机整数元素的数组 230
7.6.14 随机化单元格区域 232
7.6.15 对单元格区域进行排序 233
7.7 Windows API调用 234
7.7.1 理解API声明 234
7.7.2 确定文件的关联性 235
7.7.3 确定默认打印机的信息 236
7.7.4 确定视频显示器的信息 237
7.7.5 读写注册表 238
第 II 部分 高级VBA技术
第8章 使用透视表 243
8.1 数据透视表示例 243
8.1.1 创建数据透视表 244
8.1.2 检查录制的数据透视表代码 245
8.1.3 整理录制的数据透视表代码 246
8.2 创建更复杂的数据透视表 248
8.2.1 创建数据透视表的代码 249
8.2.2 更复杂数据透视表的工作原理 250
8.3 创建多个数据透视表 251
8.4 创建转换的数据透视表 254
第9章 使用图表 257
9.1 关于图表 257
9.1.1 图表的位置 257
9.1.2 宏录制器和图表 258
9.1.3 Chart对象模型 258
9.2 创建嵌入式图表 259
9.3 在图表工作表上创建图表 261
9.4 修改图表 261
9.5 使用VBA激活图表 262
9.6 移动图表 262
9.7 使用VBA使图表取消激活 264
9.8 确定图表是否被激活 264
9.9 从ChartObjects或Charts集合中删除图表 264
9.10 循环遍历所有图表 265
9.11 调整ChartObjects对象的大小并对齐 267
9.12 创建大量图表 268
9.13 导出图表 271
9.14 修改图表中使用的数据 272
9.14.1 基于活动单元格修改图表数据 273
9.14.2 用VBA确定图表中使用的单元格区域 274
9.15 使用VBA在图表上显示任意数据标签 277
9.16 在用户窗体中显示图表 279
9.17 理解图表事件 281
9.17.1 使用图表事件的一个示例 282
9.17.2 为嵌入式图表启用事件 284
9.17.3 示例:在嵌入式图表上使用图表事件 285
9.18 VBA制图技巧 287
9.18.1 在整个页面上打印嵌入式图表 287
9.18.2 创建未链接的图表 287
9.18.3 用MouseOver事件显示文本 289
9.18.4 滚动图表 291
9.19 使用迷你图 292
第10章 与其他应用程序的交互 296
10.1 了解Microsoft Office自动化 296
10.1.1 了解“绑定”概念 296
10.1.2 一个简单的自动化示例 298
10.2 从Excel中自动执行Access任务 299
10.2.1 从Excel中运行Access查询 299
10.2.2 从Excel运行Access宏 300
10.3 从Excel自动执行Word任务 301
10.3.1 将Excel数据传递给Word文档 301
10.3.2 模拟Word文档的邮件合并功能 302
10.4 从Excel自动执行PowerPoint任务 304
10.4.1 将Excel数据发送到PowerPoint演示文稿中 304
10.4.2 将所有Excel图表发送到PowerPoint演示文稿中 305
10.4.3 将工作表转换成PowerPoint演示文稿 307
10.5 从Excel自动执行Outlook任务 308
10.5.1 以附件形式发送活动工作簿 308
10.5.2 以附件形式发送指定单元格区域 309
10.5.3 以附件形式发送指定的单个工作表 310
10.5.4 发送给联系人列表中的所有Email地址 311
10.6 从Excel启动其他应用程序 312
10.6.1 使用VBA的Shell函数 313
10.6.2 使用Windows的ShellExecute API函数 315
10.6.3 使用AppActivate语句 316
10.6.4 激活“控制面板”对话框 317
第11章 处理外部数据和文件 318
11.1 处理外部数据连接 318
11.2 Power Query基础介绍 318
11.2.1 了解查询步骤 323
11.2.2 刷新Power Query数据 324
11.2.3 管理已有的查询 324
11.2.4 使用VBA创建动态连接 325
11.2.5 遍历工作簿中的所有连接 327
11.3 使用ADO和VBA来提取外部数据 328
11.3.1 连接字符串 328
11.3.2 声明记录集 329
11.3.3 引用ADO对象库 330
11.3.4 以编程方式使用ADO连接Access 331
11.3.5 对活动工作簿使用ADO 332
11.4 处理文本文件 334
11.4.1 打开文本文件 334
11.4.2 读取文本文件 335
11.4.3 编写文本文件 335
11.4.4 获取文件序号 335
11.4.5 确定或设置文件位置 335
11.4.6 读写语句 336
11.5 文本文件操作示例 336
11.5.1 导入文本文件的数据 336
11.5.2 将单元格区域的数据导出到文本文件 337
11.5.3 将文本文件的内容导出到单元格区域 338
11.5.4 记录Excel日志的用法 339
11.5.5 筛选文本文件 339
11.6 执行常见的文件操作 340
11.6.1 使用与VBA文件相关的指令 341
11.6.2 使用FileSystemObject对象 345
11.7 压缩和解压缩文件 347
11.7.1 压缩文件 347
11.7.2 解压缩文件 348
第 III 部分 操作用户窗体
第12章 使用自定义对话框 353
12.1 创建用户窗体之前需要了解的内容 353
12.2 使用输入框 353
12.2.1 VBA的InputBox函数 353
12.2.2 Excel的InputBox方法 356
12.3 VBA的MsgBox函数 359
12.4 Excel的GetOpenFilename方法 363
12.5 Excel的GetSaveAsFilename方法 366
12.6 提示输入目录名称 366
12.7 显示Excel的内置对话框 367
12.8 显示数据记录单 369
12.8.1 使得数据记录单变得可以访问 369
12.8.2 通过使用VBA来显示数据记录单 370
第13章 用户窗体概述 371
13.1 Excel如何处理自定义对话框 371
13.2 插入新的用户窗体 372
13.3 向用户窗体中添加控件 372
13.4 “工具箱”中的控件 373
13.4.1 复选框 373
13.4.2 组合框 374
13.4.3 命令按钮 374
13.4.4 框架 374
13.4.5 图像 374
13.4.6 标签 375
13.4.7 列表框 375
13.4.8 多页 375
13.4.9 选项按钮 375
13.4.10 RefEdit 375
13.4.11 滚动条 375
13.4.12 数值调节钮 375
13.4.13 TabStrip 375
13.4.14 文本框 376
13.4.15 切换按钮 376
13.5 调整用户窗体的控件 377
13.6 调整控件的属性 378
13.6.1 使用“属性”窗口 378
13.6.2 共同属性 379
13.6.3 满足键盘用户的需求 381
13.7 显示用户窗体 383
13.7.1 调整显示位置 384
13.7.2 显示非模态的用户窗体 384
13.7.3 显示基于变量的用户窗体 384
13.7.4 加载用户窗体 384
13.7.5 关于事件处理程序 385
13.8 关闭用户窗体 385
13.9 创建用户窗体的示例 386
13.9.1 创建用户窗体 386
13.9.2 编写代码显示对话框 389
13.9.3 测试对话框 390
13.9.4 添加事件处理程序 391
13.9.5 完成对话框 392
13.9.6 了解事件 392
13.9.7 数值调节钮的事件 394
13.9.8 数值调节钮与文本框配套使用 395
13.10 引用用户窗体的控件 397
13.11 自定义“工具箱” 399
13.11.1 在“工具箱”中添加新页 399
13.11.2 自定义或组合控件 399
13.11.3 添加新的ActiveX控件 400
13.12 创建用户窗体的模板 401
13.13 用户窗体问题检测列表 402
第14章 用户窗体示例 403
14.1 创建用户窗体式菜单 403
14.1.1 在用户窗体中使用命令按钮 403
14.1.2 在用户窗体中使用列表框 404
14.2 从用户窗体选中单元格区域 405
14.3 创建欢迎界面 407
14.4 禁用用户窗体的关闭按钮 408
14.5 改变用户窗体的大小 409
14.6 在用户窗体中缩放和滚动工作表 411
14.7 列表框技巧 412
14.7.1 向列表框控件中添加条目 413
14.7.2 确定列表框中选中的条目 417
14.7.3 确定列表框中的多个选中条目 417
14.7.4 单个列表框中的多个列表 418
14.7.5 列表框条目的转移 419
14.7.6 在列表框中移动条目 420
14.7.7 使用多列的列表框控件 422
14.7.8 使用列表框选中工作表中的行 423
14.7.9 使用列表框激活工作表 425
14.7.10 通过文本框来筛选列表框 428
14.8 在用户窗体中使用多页控件 429
14.9 使用外部控件 431
14.10 使标签动画化 433
第15章 高级用户窗体技术 436
15.1 非模态对话框 436
15.2 显示进度条 439
15.2.1 创建独立的进度条 440
15.2.2 集成到用户窗体中的进度条 444
15.2.3 创建非图形化进度条 447
15.3 创建向导 448
15.3.1 为向导设置多页控件 449
15.3.2 在向导用户窗体中添加按钮 450
15.3.3 编写向导按钮的程序 450
15.3.4 编写向导中的相关代码 451
15.3.5 使用向导执行任务 453
15.4 模仿MsgBox函数 454
15.4.1 模仿MsgBox函数:MyMsgBox函数的代码 455
15.4.2 MyMsgBox函数的工作原理 456
15.4.3 使用MyMsgBox函数 457
15.5 带有可移动控件的用户窗体 457
15.6 没有标题栏的用户窗体 459
15.7 使用用户窗体模拟工具栏 460
15.8 使用用户窗体来模仿任务面板 462
15.9 可调整大小的用户窗体 463
15.10 用一个事件处理程序处理多个用户窗体控件 466
15.11 在用户窗体中选择颜色 468
15.12 在用户窗体中显示图表 470
15.12.1 将图表保存为GIF文件 471
15.12.2 更改图像控件的Picture属性 471
15.13 使用户窗体半透明 471
15.14 用户窗体上的数字推盘 473
15.15 用户窗体上的电动扑克 474
第 IV 部分 开发Excel应用程序
第16章 创建和使用加载项 477
16.1 什么是加载项 477
16.1.1 加载项与标准工作簿的比较 477
16.1.2 创建加载项的原因 478
16.2 理解Excel的加载项管理器 480
16.3 创建加载项 481
16.4 加载项示例 482
16.4.1 为加载项示例添加描述信息 483
16.4.2 创建加载项 483
16.4.3 安装加载项 484
16.4.4 测试加载项 485
16.4.5 发布加载项 485
16.4.6 修改加载项 485
16.5 比较XLAM和XLSM文件 486
16.5.1 XLAM文件中的VBA集合成员 486
16.5.2 XLSM和XLAM文件的可见性 487
16.5.3 XLSM和XLAM文件的工作表和图表工作表 487
16.5.4 访问加载项中的VBA过程 488
16.6 用VBA操作加载项 491
16.6.1 向AddIns集合中添加项 491
16.6.2 从AddIns集合中删除项 492
16.6.3 AddIn对象属性 492
16.6.4 作为工作簿访问加载项 495
16.6.5 AddIn对象事件 496
16.7 优化加载项的性能 496
16.8 加载项的特殊问题 497
16.8.1 确保加载项已经安装 497
16.8.2 从加载项中引用其他文件 499
第17章 使用功能区 500
17.1 功能区基础 500
17.2 自定义功能区 501
17.2.1 向功能区中添加按钮 502
17.2.2 向快速访问工具栏中添加按钮 504
17.2.3 自定义功能区的局限性 505
17.3 创建自定义的功能区 505
17.3.1 将按钮添加到现有的选项卡中 506
17.3.2 向已有的选项卡中添加复选框 510
17.3.3 功能区控件演示 513
17.3.4 dynamicMenu控件示例 520
17.3.5 关于自定义功能区的其他内容 522
17.4 VBA和功能区 523
17.4.1 访问功能区控件 523
17.4.2 使用功能区 524
17.4.3 激活选项卡 526
17.5 创建老式工具栏 526
17.5.1 老式工具栏的局限性 526
17.5.2 创建工具栏的代码 526
第18章 使用快捷菜单 529
18.1 命令栏简介 529
18.1.1 命令栏的类型 529
18.1.2 列出快捷菜单 530
18.1.3 引用命令栏 531
18.2 引用命令栏中的控件 531
18.3 命令栏控件的属性 532
18.4 显示所有的快捷菜单项 533
18.5 使用VBA自定义快捷菜单 534
18.6 重置快捷菜单 536
18.6.1 禁用快捷菜单 537
18.6.2 禁用快捷菜单项 538
18.6.3 向“单元格”快捷菜单中添加一个新项 538
18.6.4 向快捷菜单添加一个子菜单 540
18.6.5 将快捷菜单限制到单个工作簿 542
18.7 快捷菜单与事件 542
18.7.1 自动添加和删除菜单 542
18.7.2 禁用或隐藏快捷菜单项 543
18.7.3 创建一个上下文相关的快捷菜单 543
第19章 为应用程序提供帮助 546
19.1 Excel应用程序的“帮助” 546
19.2 使用Excel组件的帮助系统 548
19.2.1 为帮助系统使用单元格批注 548
19.2.2 为帮助系统使用文本框 549
19.2.3 使用工作表来显示帮助文本 550
19.2.4 在用户窗体中显示帮助信息 551
19.3 在Web浏览器中显示“帮助” 554
19.3.1 使用HTML文件 554
19.3.2 使用一个MHTML文件 555
19.4 使用HTML帮助系统 556
19.4.1 使用Help方法来显示HTML帮助信息 557
19.4.2 将“帮助”文件与应用程序相关联 558
19.4.3 将一个帮助主题与一个VBA函数相关联 558
第20章 理解类模块 560
20.1 什么是类模块 560
20.1.1 内置的类模块 561
20.1.2 自定义类模块 561
20.2 创建NumLock类 562
20.2.1 插入类模块 562
20.2.2 给类模块添加VBA代码 563
20.2.3 使用CNumLock类 564
20.3 属性、方法和事件编程 565
20.3.1 对象属性编程 565
20.3.2 对象的方法编程 566
20.3.3 类模块事件 567
20.4 QueryTable事件 567
20.5 创建存储类的类 570
20.5.1 创建CSalesRep和CSalesReps类 570
20.5.2 创建CInvoice和CInvoices类 572
20.5.3 用对象填充父类 573
20.5.4 计算佣金 574
第21章 兼容性问题 576
21.1 什么是兼容性 576
21.2 兼容性问题的类型 577
21.3 避免使用新功能 578
21.4 在Mac机器上是否可用 579
21.5 处理64位Excel 580
21.6 创建一个国际化应用程序 581
21.7 多语言应用程序 582
21.8 VBA语言的考虑 583
21.9 使用本地属性 583
21.10 系统设置识别 584
21.11 日期和时间设置 586
附录A VBA语句和函数引用 587
A.1 VBA语句 587
A.2 函数 590
^ 收 起
Michael Alexander是一名微软认证应用程序开发人员(MCAD),著有Microsoft Access和 Microsoft Excel高级业务分析的相关书籍。他在咨询和开发Microsoft Office解决方案方面拥有超过20年的经验。Michael因对Excel社区的持续贡献而被评为Microsoft MVP。可以通过www.datapigtechnologies.com网站与他取得联系。Dick Kusleika是12次Microsoft Excel MVP,与Microsoft Office合作超过20年。Dick为客户开发基于Access和Excel的解决方案,并在美国和澳大利亚举办了Office产品培训研讨会。Dick还在www.dailydoseofexcel.com上撰写与Excel相关的博客。
● 记录简单的宏以及执行其他相关操作
● 动态操作工作簿和工作表
● 自动生成透视表和图表
● 管理外部数据和外部文件
● 从Excel直接发送邮件
● 创建自定义Excel功能区界面
● 开发和发布自定义的Excel加载项
● 动态操作工作簿和工作表
● 自动生成透视表和图表
● 管理外部数据和外部文件
● 从Excel直接发送邮件
● 创建自定义Excel功能区界面
● 开发和发布自定义的Excel加载项
比价列表