第1部分 Excel应用程序设计简介
第1章 VBA与Excel应用程序 2
1.1 VBA概述 2
1.1.1 Basic语言 2
1.1.2 Visual Basic简介 2
1.1.3 VBA 3
1.2 Excel应用程序简介 3
1.3 Excel VBA应用程序结构 4
1.3.1 Excel VBA应用程序的构成 4
1.3.2 事件驱动 4
1.4 Excel应用程序开发流程 5
1.4.1 需求分析 5
1.4.2 界面设计 5
1.4.3 代码设计 6
1.4.4 帮助系统 6
1.4.5 系统测试 6
1.4.6 应用程序发布 7
第2章 使用Excel的宏 8
2.1 什么是宏 8
2.2 创建宏 8
2.2.1 显示“开发工具”选项卡 8
2.2.2 录制宏 10
2.2.3 使用VisualBasic创建宏 11
2.3 运行宏 12
2.3.1 使用“宏”对话框运行宏 12
2.3.2 使用键盘快捷键运行宏 13
2.3.3 使用快速工具栏运行宏 13
2.3.4 通过按钮运行宏 14
2.3.5 通过图形对象运行宏 15
2.3.6 打开工作簿自动运行宏 16
2.3.7 在VBE环境中运行宏 17
2.4 编辑宏 18
2.4.1 分析宏代码 18
2.4.2 清理宏代码 19
2.4.3 编辑宏的步骤 20
2.5 宏的安全性 23
2.5.1 宏安全性概述 23
2.5.2 打开包含宏的文档 24
2.5.3 数字签名简介 24
第3章 VBE开发环境28
3.1 VBE概述 28
3.1.1 VBE简介 28
3.1.2 VBE的组成 29
3.2 工程资源管理器 31
3.2.1 工程资源管理器的组成 31
3.2.2 管理工程资源 31
3.3“属性”窗口 33
3.3.1 属性窗口的组成 33
3.3.2 设置属性的方法 34
3.4“代码”窗口 35
3.4.1 代码窗口的组成 35
3.4.2 编辑代码 36
3.4.3 编辑代码快捷助手 37
3.5 定制VBE环境 40
3.5.1 设置“编辑器”选项卡 40
3.5.2 设置“编辑器格式”选项卡 41
3.5.3 设置“通用”选项卡 41
3.5.4 设置“可连接的”选项卡 41
第4章 第1个VBA程序 42
4.1 应用程序分析 42
4.2 设计窗体 42
4.3 编写VBA代码 44
4.3.1 编写窗体代码 44
4.3.2 编写模块代码 46
4.4 测试VBA程序 47
第2部分 VBA程序设计基础
第5章 VBA基本概念50
5.1 VBA的数据类型 50
5.1.1 基本数据类型 50
5.1.2 枚举类型 52
5.1.3 用户定义数据类型 53
5.2 常量和变量 53
5.2.1 标识符命名规则 53
5.2.2 常量 54
5.2.3 变量 55
5.2.4 强制声明变量 56
5.2.5 变量的作用域 57
5.2.6 变量的存活期 58
5.3 运算符和表达式 58
5.3.1 算术运算符 59
5.3.2 比较运算符 59
5.3.3 连接运算符 59
5.3.4 逻辑运算符 60
5.3.5 表达式 60
第6章 VBA常用语句61
6.1 语句 61
6.1.1 自动格式化 61
6.1.2 复合语句与语句断行 61
6.2 赋值语句和注释语句 62
6.2.1 赋值语句 62
6.2.2 注释语句 63
6.3 数据输入/输出 63
6.3.1 数据输入——InputBox函数 63
6.3.2 数据输出——Print方法 64
6.3.3 数据输出——MsgBox函数 65
6.4 程序暂停和退出语句 67
6.4.1 暂停语句 67
6.4.2 退出语句 68
第7章 程序控制结构 69
7.1 算法的概念及表示 69
7.1.1 算法简介 69
7.1.2 流程图 69
7.2 程序结构概述 70
7.3 分支程序结构 71
7.3.1 If … Then语句 71
7.3.2 If … Then … Else语句72
7.3.3 IIf函数 72
7.3.4 If … Then … ElseIf语句 73
7.3.5 Select Case语句 74
7.3.6 分支结构的嵌套 76
7.4 循环程序结构 77
7.4.1 Do … Loop循环 77
7.4.2 While … Wend循环 80
7.4.3 For … Next循环 80
7.4.4 循环的嵌套 82
7.4.5 Goto语句 83
第8章 数组 85
8.1 数组简介 85
8.2 声明数组 85
8.2.1 定义一维数组 85
8.2.2 定义二维数组 87
8.2.3 默认数组 87
8.3 动态数组 88
8.4 数组的基本操作 89
8.4.1 数组的初始化 89
8.4.2 数组元素的复制 90
8.4.3 数组的清除 91
8.4.4 数组函数 92
第9章 Sub过程 93
9.1 过程的分类 93
9.2 定义Sub过程 94
9.2.1 添加过程 94
9.2.2 使用代码创建Sub过程 95
9.3 调用Sub过程 96
9.3.1 使用VBA代码调用Sub过程 96
9.3.2 以宏方式调用Sub过程 97
9.4 传递参数 97
9.4.1 形参与实参的结合 98
9.4.2 传地址 98
9.4.3 传值 99
9.4.4 传递数组参数 100
9.5 可选参数和可变参数 100
9.5.1 可选参数 101
9.5.2 可变参数 101
第10章 Function函数 103
10.1 函数与过程103
10.2 定义函数 103
10.2.1 创建函数 103
10.2.2 调用函数 104
10.3 Function函数实例 106
10.3.1 大写金额转换函数 106
10.3.2 生成彩票号码 107
第3部分 Excel对象模型
第11章 对象概述 110
11.1 对象和类的概念110
11.1.1 什么是对象 110
11.1.2 类的概念 110
11.2 对象的属性、事件和方法111
11.2.1 对象属性 111
11.2.2 对象事件 112
11.2.3 对象方法 112
11.3 对象变量和对象数组113
11.3.1 对象变量 113
11.3.2 对象数组 115
11.4 集合概述 115
11.4.1 集合的概念 115
11.4.2 集合的方法和属性 116
11.4.3 访问集合中的对象 116
11.5 处理对象和集合117
11.5.1 使用With… End With语句 117
11.5.2 使用ForEach … Next语句 118
第12章 Excel对象模型 120
12.1 Excel对象模型 120
12.1.1 Excel对象简介120
12.1.2 Excel对象模型图 120
12.1.3 使用隐含对象 122
12.1.4 Excel常用对象122
12.2 使用对象浏览器123
12.2.1 对象浏览器简介 123
12.2.2 用对象浏览器查看对象成员 125
12.2.3 用对象浏览器查看VBA函数126
12.2.4 用对象浏览器查看过程 127
第13章 Excel常用对象 128
13.1 Application对象 128
13.1.1 Application对象的用途 128
13.1.2 设置Excel主窗口标题栏 128
13.1.3 显示或关闭编辑栏 129
13.1.4 关闭屏幕更新 129
13.1.5 设置状态栏 130
13.1.6 查看模板文件的路径 130
13.1.7 最大化Excel窗口 131
13.1.8 获取对象的引用 131
13.1.9 重新计算 132
13.1.10 将R1C1转换为A1样式 133
13.1.11 快速跳转 133
13.1.12 定时执行过程 133
13.1.13 合并区域 134
13.2 Workbook对象 134
13.2.1 新建工作簿 134
13.2.2 打开工作簿 135
13.2.3 查看文档属性 135
13.2.4 处理工作簿文件名 138
13.2.5 处理命名单元格区域 138
13.2.6 设置工作簿密码 139
13.2.7 更名保存工作簿 140
13.2.8 关闭前自动保存工作簿 141
13.3 Worksheet对象 141
13.3.1 新建工作表 141
13.3.2 管理批注 142
13.3.3 设置工作表滚动区域 143
13.3.4 在工作表中绘制图形 144
13.3.5 隐藏工作表 144
13.3.6 在工作表中校验数据 145
13.3.7 自动生成下拉数据 145
13.4 Range对象 147
13.4.1 获取Range对象 147
13.4.2 设置边框线 149
13.4.3 设置单元格部分字符格式 150
13.4.4 操作当前区域 151
13.4.5 修改列宽 151
13.4.6 定义条件格式 151
13.4.7 设置单元格格式 152
13.5 Chart对象 153
13.5.1 图表分类 153
13.5.2 添加图表工作表 153
13.5.3 添加嵌入式图表 154
13.6 Window对象 155
13.6.1 创建窗口 155
13.6.2 命名活动窗口 156
13.6.3 控制窗口状态 156
13.6.4 激活窗口 157
13.6.5 控制工作表显示选项 157
第14章 常用的VBA代码 159
14.1 引用单元格区域159
14.1.1 引用A1样式 159
14.1.2 引用行列编号 160
14.1.3 引用整行/整列 160
14.1.4 引用命名区域 161
14.2 处理单元格区域161
14.2.1 选定单元格区域 162
14.2.2 处理活动单元格 162
14.2.3 处理三维区域 163
14.2.4 复制单元格区域 163
14.2.5 复制动态区域 164
14.2.6 处理合并区域 165
14.2.7 保护单元格 166
14.3 处理工作簿和工作表167
14.3.1 将工作簿保存为Web页167
14.3.2 保护工作簿 168
14.3.3 判断工作簿是否存在 168
14.3.4 判断工作簿是否打开 169
14.3.5 备份工作簿 170
14.3.6 获取关闭工作簿中的值 171
14.3.7 设置数字精度 172
14.4 处理工作表173
14.4.1 判断工作表是否存在 173
14.4.2 管理工作表 174
14.4.3 操作行和列 176
14.4.4 保护工作表 178
14.4.5 工作表排序 179
14.4.6 删除空工作表 180
14.5 控制窗口 180
14.5.1 设置窗口大小 181
14.5.2 动态改变窗口大小 181
14.5.3 设置显示比例 182
14.5.4 排列窗口 182
14.5.5 并排比较窗口 183
14.5.6 拆分窗格 184
第15章 Excel的事件186
15.1 了解事件 186
15.1.1 事件分类 186
15.1.2 编写事件程序 187
15.2 工作簿事件187
15.2.1 工作簿事件简介 187
15.2.2 Open事件 188
15.2.3 BeforeClose事件 189
15.2.4 Activate事件 189
15.2.5 Deactivate事件 190
15.2.6 SheetActivate事件 190
15.2.7 NewSheet事件 190
15.2.8 BeforeSave事件 191
15.2.9 BeforePrint事件 191
15.3 工作表事件192
15.3.1 工作表事件简介 192
15.3.2 Activate事件 192
15.3.3 BeforeRightClick事件 192
15.3.4 Change事件 193
15.3.5 SelectionChange事件 194
15.4 OnTime和OnKey事件 195
15.4.1 OnTime事件 195
15.4.2 OnKey事件 196
15.5 事件的产生顺序196
15.5.1 工作簿事件产生顺序 196
15.5.2 工作表事件产生顺序 197
第4部分 用户界面设计
第16章 自定义Excel2010功能区 200
16.1 功能区简介200
16.1.1 认识Excel2010的功能区 200
16.1.2 自定义功能区的方法 201
16.2 使用XML自定义功能区 201
16.2.1 了解Excel2010文件格式 201
16.2.2 创建功能区选项卡 202
16.3 使用UI编辑器 206
16.3.1 认识UI编辑器 206
16.3.2 使用UI编辑器的步骤 207
16.4 UI界面元素 209
16.4.1 基本控件 209
16.4.2 容器控件 211
16.4.3 控件属性 212
16.5 自定义UI实例 213
16.5.1 组合内置控件 213
16.5.2 添加组到内置选项卡 215
16.5.3 创建新选项卡 216
第17章 创建工作表窗体 218
17.1 工作表窗体的概念 218
17.2 认识控件 219
17.2.1 控件分类 219
17.2.2 向工作表添加控件 220
17.2.3 操作工作表控件 220
17.3 使用表单控件 221
17.3.1 按钮控件 221
17.3.2 组合框控件 222
17.3.3 复选框控件 224
17.3.4 数值调节钮控件 225
17.3.5 列表框控件 225
17.3.6 单选框控件 226
17.3.7 分组框控件 227
17.3.8 标签控件 228
17.3.9 滚动条控件 229
17.4 设计读者意见卡230
17.5 使用ActiveX控件 232
17.5.1 添加ActiveX控件 232
17.5.2 操作ActiveX控件 233
17.5.3 设置ActiveX控件属性 234
17.6 ActiveX控件实例 234
第18章 自定义窗体 236
18.1 用户窗体概述 236
18.1.1 认识用户窗体 236
18.1.2 用户窗体的相关概念 236
18.2 新建窗体 237
18.2.1 新建窗体的步骤 237
18.2.2 向窗体添加控件 237
18.2.3 设置控件属性 238
18.2.4 编写事件代码 239
18.2.5 调试运行窗体 240
18.3 控制窗体 240
18.3.1 设置窗体的属性 240
18.3.2 窗体的方法 242
18.3.3 窗体的事件 243
18.4“工具箱”控件简介243
18.4.1 控件工具箱 243
18.4.2 控件的共有属性 244
18.5 调整窗体中的控件 245
18.5.1 设置控件大小 245
18.5.2 设置控件布局 246
18.5.3 设置Tab键顺序 247
第19章 使用标准控件 248
19.1 命令按钮 248
19.1.1 命令按钮常用属性 248
19.1.2 命令按钮常用事件 248
19.1.3 按钮实例——更换标题文字 249
19.2 标签 249
19.2.1 标签常用属性 250
19.2.2 标签事件 251
19.3 文本框251
19.3.1 文本框常用属性 251
19.3.2 文本框常用事件 252
19.3.3 文本框实例——登录窗体 252
19.4 复选框253
19.4.1 复选框属性 254
19.4.2 复选框事件 254
19.4.3 复选框实例——设置字型 254
19.5 单选框255
19.5.1 单选框常用属性 255
19.5.2 单选框常用事件 255
19.5.3 单选框实例——设置窗体背景图片 255
19.6 列表框256
19.6.1 列表框常用属性 257
19.6.2 列表框常用方法 258
19.6.3 列表框常用事件 259
19.6.4 列表框实例——商品选择窗体 259
19.7 组合框261
19.7.1 组合框常用属性 261
19.7.2 组合框常用方法 261
19.7.3 组合框常用事件 261
19.7.4 组合框实例——菜单分类显示 261
19.8 图像 263
19.8.1 图像控件属性 263
19.8.2 图像控件事件 264
19.8.3 图像实例——红绿灯 264
19.9 滚动条266
19.9.1 滚动条常用属性 266
19.9.2 滚动条常用事件 266
19.9.3 滚动条实例——调色器 267
19.10 数值调节钮 268
19.10.1 数值调节钮常用属性 268
19.10.2 数值调节钮常用事件 268
19.10.3 数值调节钮实例——彩票选号 269
19.11 多页 270
19.11.1 多页控件常用属性 271
19.11.2 多页控件常用事件 272
19.11.3 多页实例——旅客登记 272
19.12 RefEdit 275
19.12.1 RefEdit常用属性 275
19.12.2 RefEdit实例——设置指定区域背景色 275
19.13 TabStrip 276
19.13.1 TabStrip控件的组成 277
19.13.2 TabStrip控件实例 277
第20章 使用ActiveX控件279
20.1 添加ActiveX控件 279
20.2 使用图像列表控件 280
20.2.1 ImageList的构成 280
20.2.2 ImageList的属性和方法280
20.2.3 添加图像到ImageList控件 281
20.2.4 改进的红绿灯窗体 282
20.3 使用树形视图控件 283
20.3.1 TreeView的构成 283
20.3.2 TreeView常用属性 283
20.3.3 TreeView常用方法 285
20.3.4 TreeView常用事件 286
20.3.5 改进的菜单分类显示 286
20.4 使用列表视图控件 291
20.4.1 列表视图的构成 291
20.4.2 ListView常用属性 291
20.4.3 设置ListView控件的属性 292
20.4.4 ListView常用事件 293
20.4.5 模拟控制面板界面 293
第21章 使用内置对话框 296
21.1 使用输入框296
21.1.1 使用InputBox方法 296
21.1.2 使用GetOpenFilename方法 297
21.1.3 使用GetSaveAsFilename方法 299
21.2 使用内置对话框300
21.2.1 显示内置对话框 300
21.2.2 设置内置对话框的参数 302
21.2.3 获取内置对话框的选择 303
第22章 使用VBA控制图表 304
22.1 图表对象 304
22.1.1 图表位置 304
22.1.2 Chart对象模型 305
22.1.3 图表对象常用属性和方法 305
22.2 录制图表宏308
22.2.1 录制创建图表的宏 309
22.2.2 查看宏代码 311
22.3 使用VBA创建图表 311
22.4 常用图表事件 313
22.4.1 图表工作表事件 314
22.4.2 嵌入图表事件 314
22.5 认识数据透视表316
22.5.1 创建数据透视表 316
22.5.2 查看数据透视表宏代码 318
22.6 了解数据透视表对象318
22.6.1 缓存对象 318
22.6.2 数据透视表对象 319
22.6.3 字段对象 319
22.6.4 数据项对象 320
第5部分 扩展应用程序
第23章 Excel加载宏322
23.1 加载宏的概念 322
23.1.1 加载宏的用途 322
23.1.2 加载宏的类型 322
23.2 管理加载宏323
23.2.1 载入加载宏 323
23.2.2 卸载加载宏 324
23.3 创建加载宏324
23.3.1 创建表格 324
23.3.2 编写代码 325
23.3.3 测试宏功能 328
23.3.4 保存为加载宏 328
23.4 使用加载宏330
23.4.1 加载自定义加载宏 330
23.4.2 调用加载宏的功能 331
第24章 使用类模块 333
24.1 类的概念 333
24.1.1 了解类 333
24.1.2 类的作用 333
24.1.3 类的预备知识 334
24.2 创建类334
24.2.1 建立对象类 335
24.2.2 建立属性 335
24.2.3 创建PropertyGet过程 336
24.2.4 创建PropertyLet过程 337
24.2.5 创建对象类的方法 338
24.2.6 类模块的事件 338
24.3 使用类模块创建对象339
24.3.1 设计新增员工窗体 339
24.3.2 设计调整员工部门窗体 341
24.3.3 设计调整工资窗体 341
24.3.4 测试程序功能 342
第25章 调用API 344
25.1 API概述 344
25.1.1 API简介 344
25.1.2 API基础 344
25.2 在Excel中使用API 345
25.2.1 API函数声明 345
25.2.2 查找API函数 346
25.2.3 使用API函数 349
25.3 操作注册表350
25.3.1 注册表结构 350
25.3.2 使用VBA函数访问注册表 351
25.3.3 使用API函数创建注册表键 352
25.4 获取系统信息 354
25.4.1 获取内存状态 354
25.4.2 获取键盘信息 356
第6部分 应用程序整合
第26章 数据库编程 360
26.1 数据库概述360
26.1.1 数据库的构成 360
26.1.2 访问数据库 361
26.2 使用MSQuery检索外部数据 362
26.2.1 了解MSQuery362
26.2.2 连接数据源 362
26.2.3 使用查询向导定义查询 364
26.2.4 在Excel中处理数据 365
26.3 结构化查询语言365
26.3.1 结构化查询简介 366
26.3.2 SQL查询数据 366
26.3.3 SQL更新数据 369
26.4 ADO数据访问 370
26.4.1 数据访问方法 370
26.4.2 ADO对象模型 370
26.4.3 使用ADO存取数据371
26.5 数据库编程实例374
第27章 使用文件对象模型 379
27.1 文件对象模型简介 379
27.2 创建FSO对象 379
27.2.1 添加FSO对象模型引用 380
27.2.2 创建FSO对象的方法 380
27.3 操作驱动器381
27.3.1 Drive对象的属性 381
27.3.2 查询磁盘信息 381
27.3.3 查询各硬盘的剩余空间 382
27.4 操作文件夹383
27.4.1 操作文件夹的方法 383
27.4.2 获取文件夹信息 383
27.4.3 创建和删除文件夹 384
27.4.4 列出文件夹名称 384
27.4.5 删除空文件夹 385
27.5 操作文件 387
27.5.1 操作文件的方法 387
27.5.2 创建文本文件 387
27.5.3 添加数据 388
27.5.4 读取数据 389
27.5.5 复制文件 389
27.5.6 列出文件名称 389
第28章 控制Office其他程序 391
28.1 自动化技术简介391
28.2 使用自动化技术391
28.2.1 引用服务程序 391
28.2.2 浏览对象库的内容 392
28.2.3 创建自动化对象实例 393
28.3 自动生成通知书393
28.3.1 准备数据 393
28.3.2 调用自动化服务 395
28.3.3 使用代码生成通知书 398
第7部分 Excel应用程序的调试与优化
第29章 Excel应用程序的安全400
29.1 用户身份认证 400
29.2 源代码安全403
29.2.1 保护工程 404
29.2.2 使用动态链接库 405
第30章 VBA程序调试 411
30.1 使用VBE调试程序 411
30.1.1 VBA程序的运行方式 411
30.1.2 设置断点 412
30.1.3 监视表达式 413
30.1.4 使用“本地”窗口 415
30.1.5 使用“立即”窗口 415
30.2 条件编译 416
30.2.1 什么是条件编译 416
30.2.2 条件编译语句 416
30.2.3 使用条件编译 417
第31章 VBA程序优化 419
31.1 程序优化的概念419
31.2 代码优化 419
31.2.1 代码优化的作用 420
31.2.2 优化变量 420
31.2.3 优化循环 423
31.2.4 优化对象引用 424
31.2.5 其他代码优化方法 426
第32章 VBA错误处理 428
32.1 理解VBA错误 428
32.1.1 错误分类 428
32.1.2 错误处理过程 428
32.2 错误捕获及处理428
32.2.1 可捕获的错误 429
32.2.2 On Error语句 429
32.2.3 Resume语句 431
32.2.4 错误处理层次结构 432
32.3 错误处理实例 433
第33章 制作帮助系统 435
33.1 简单的帮助信息435
33.1.1 用批注显示帮助信息 435
33.1.2 使用文本框显示帮助信息 436
33.2 制作帮助文件 436
33.2.1 计划帮助文件 437
33.2.2 创建项目文件 437
33.2.3 创建目录文件 438
33.2.4 创建索引文件 440
33.2.5 编译生成帮助文件 441
33.2.6 打开帮助文件 442
33.3 为应用程序设置帮助文件442
第8部分 综合应用程序设计
第34章 制作人事管理系统 446
34.1 系统描述 446
34.1.1 设计思路 446
34.1.2 关键技术:用户窗体的创建和控制 446
34.1.3 关键技术:使用高级筛选查找数据 447
34.1.4 关键技术:自定义功能区 448
34.2 设计人事管理表格 448
34.3 设计登录窗体 450
34.3.1 设计登录界面 450
34.3.2 设计登录窗体的代码 450
34.3.3 测试登录窗体的步骤 453
34.4 设计人事信息窗体 454
34.4.1 设计窗体界面 454
34.4.2 设计人事信息管理代码 454
34.4.3 测试人事信息管理窗体 461
34.5 设计员工信息查询 462
34.5.1 设计数据有效性代码 462
34.5.2 设计查询代码 465
34.6 自定义功能区 466
34.6.1 创建“人事信息”选项卡 466
34.6.2 设计功能区按钮代码 471
34.6.3 测试自定义功能区 472
第35章 制作库存管理系统(2010版) 474
35.1 系统描述 474
35.1.1 设计思路 474
35.1.2 关键技术:设置工作表滚动区域 475
35.1.3 关键技术:End属性 475
35.1.4 关键技术:Names集合对象 476
35.2 设计基础设置模块 476
35.2.1 商品信息管理 476
35.2.2 部门信息管理 480
35.2.3 供应商信息管理 481
35.3 设计库存管理模块 483
35.3.1 设计商品清单列表 483
35.3.2 设计入库单 484
35.3.3 设计出库单 491
35.3.4 设计入库/出库明细表 496
35.3.5 设计库存汇总 497
35.4 设计账务处理模块 499
35.4.1 设计库存明细账 499
35.4.2 设计应付账管理 505
35.4.3 设计盘点表 507
35.4.4 设计库存报警 508
35.5 用功能区集合各模块510
35.5.1 创建“库存管理”选项卡 511
35.5.2 设计功能区按钮代码 514
35.6 设计主界面及工作簿事件516
35.6.1 设计主界面 517
35.6.2 设计工作簿的Open事件代码 518
35.6.3 设计工作簿的BeforeClose事件代码 518
附录 在Excel2003中使用宏 519