目录 2
第1天 入门 2
1.1 宏及编程语言 2
1.1.1 什么是宏? 2
1.1.2 VBA的历史 2
1.2 为什么要学习VBA? 3
1.3 记录一个新的宏 4
1.3.1 设置宏的初始条件 5
1.3.2 启动宏记录器 5
1.3.3 命名新的宏并选择选项 6
1.3.4 记录操作 8
1.3.5 关闭宏记录器 10
1.4 运行一个宏 11
第2天 编写和编辑简单的宏 15
2.1 了解VBA环境 15
2.1.1 理解模块表 15
2.1.2 测试VBA工具栏和菜单命令 16
2.2 编辑宏 20
2.2.1 寻找记录宏 20
2.2.2 记录宏的结构 22
2.2.3 编辑宏文本 24
2.2.4 从一个模块表中移动或复制一个宏到另一个模块表中 26
2.2.5 移动或复制一张完整的模块表 26
2.2.6 保护宏的源代码 27
2.3 编写一个新宏 27
2.3.1 增加一个新的模块表 27
2.3.2 选择一个已有的模块表 28
2.3.3 编写宏文本 28
2.4 在编辑宏的过程中运行宏 30
2.5 为宏用户显示信息 31
2.6.1 语法错误 32
2.6 关于编写、编辑或运行宏时出现的错误信息 32
2.6.2 运行期错误(Runtime Errors) 34
2.7 在一个宏中记录新的操作 35
2.8 打印宏 37
第3天 理解数据类型、变量和常量 40
3.1 Visual Basic数据类型 40
3.1.1 日期型 41
3.1.2 数字型 42
3.1.3 字符串 43
3.2.1 什么是变量? 44
3.2 理解变量 44
3.1.5 可变数据 44
3.1.4 逻辑值 44
3.2.2 选择变量名 45
3.2.3 创建变量 47
3.2.4 作用域:判断变量是否有效 49
3.2.5 有效期(Persistence):变量的值保留多久 52
3.2.6 强制显式声明变量 53
3.2.7 指定变量的数据类型 54
3.3 理解常量 57
3.3.2 常量作用域 58
3.3.1 创建命名常量 58
3.3.3 文字常量 59
3.3.4 指定常量的数据类型 60
3.3.5 理解预定义常量 61
3.3.6 使用对象浏览器查找预定义常量 61
3.4 得到过程的用户输入的数据 62
第4天 运算符与表达式 67
4.1 理解运算符和表达式 67
4.2 数据类型的兼容 68
4.3 Visual Basic的自动数据类型转换 69
4.3.2 字符串类型与数字类型的转换 70
4.3.1 数字类型转换 70
4.3.3 布尔型转换 71
4.3.4 日期型转换 71
4.4 赋值运算符(=) 71
4.5 算术运算符 73
4.5.1 加运算符(+) 73
4.5.2 减运算符(-) 74
4.5.3 乘运算符(*) 74
4.5.5 整数除运算符(\) 75
4.5.6 取模运算符(Mod) 75
4.5.4 除运算符(/) 75
4.5.7 乘方运算符(^) 76
4.6 比较运算符 76
4.6.1 字符串比较 77
4.6.2 Like运算符 79
4.6.3 Is运算符 81
4.7 逻辑运算符 81
4.7.1 理解真值表 82
4.7.2 与运算符(And) 82
4.7.3 或运算符(Or) 82
4.7.6 等价运算符(Eqv) 83
4.7.4 非运算符(Not) 83
4.7.5 异或运算符(Xor) 83
4.7.7 蕴含运算符(Imp) 84
4.8 串连接符 84
4.8.1 使用串连接符 84
4.8.2 串连接符 85
4.9 理解运算符的优先级和复杂表达式的值 86
第5天 VBA及Excel函数 90
5.1 理解函数 90
5.1.1 在赋值语句及表达式中使用函数 90
5.1.2 理解函数参数和函数值 92
5.1.3 忽略函数的返回值 93
5.1.4 使用函数的命名参数表 94
5.2 使用VBA函数 96
5.2.1 数学函数 96
5.2.2 数据类型转换函数 97
5.2.3 日期和时间函数 98
5.2.4 交互函数 98
5.2.5 字符串函数 101
5.2.6 磁盘、目录信息及其他函数 101
5.3 使用Excel的函数 102
5.4 使用对象浏览器增加函数调用 103
5.4.1 查看及增加Visual Basic的函数 104
5.4.2 查看及增加Excel函数 105
5.5 使用函数进行字符串操作 106
5.5.1 去除外部空格符 106
5.5.2 得到字符串长度 107
5.5.3 比较和查询字符串 108
5.5.4 分割串 110
5.5.5 使用不能用键盘输入的字符 111
6.1 理解函数过程和用户自定义函数 115
第6天 函数过程与用户自定义函数 115
6.2 创建函数过程 116
6.2.1 编写函数过程 116
6.2.2 为Excel和其他主应用程序创建函数 118
6.2.3 为函数的结果声明数据类型 119
6.2.4 为函数的参数声明数据类型 120
6.2.5 创建可缺省参数 121
6.2.6 理解和控制VBA传递参数的方式 123
6.3 在VBA中使用函数过程 125
6.3.1 使用对象浏览器查找和增加函数过程 125
6.3.3 输入一个函数过程在对象浏览器中显示的说明文字 126
6.3.2 使用对象浏览器显示函数代码 126
6.4 在Excel中使用用户自定义函数 127
6.4.1 改变一个用户自定义函数的种类 129
6.5 设计函数过程和用户自定义函数 129
6.5.1 为Excel设计函数 130
6.6 理解递归 131
6.6.1 分析递归函数的运算 131
6.6.2 避免意外递归和其他递归问题 133
7.1.1 对象的属性 137
7.1 理解对象 137
第7天 使用对象 137
7.1.2 对象的方法 138
7.2 使用对象 139
7.2.1 使用对象的属性 140
7.2.2 使用对象的方法 142
7.2.3 声明对象变量 144
7.2.4 在表达式和赋值语句中使用对象 145
7.2.5 通过With…End With引用对象 146
7.3 使用对象集合和对象容器 148
7.3.2 引用一个集合或容器中的对象 151
7.3.1 在集合中增加新元素 151
7.4 用对象浏览器查看对象、方法和属性 152
一周回顾 158
第8天 VBA的选择语句 164
8.1 了解VBA的选择命令 165
8.2 简单选择语句 166
8.2.1 使用If…Then选择单个分支语句 166
8.2.2 用If…Then…Else语句在两个分支中选择 168
8.3 复杂的选择 170
8.3.1 嵌套的If…Then语句 170
8.3.2 使用If…Then…Elself语句 172
8.3.3 使用Select…Case语句 173
8.4 无条件转移 177
8.5 提前结束过程、函数和整个程序 180
8.5.1 使用Exit语句 180
8.5.2 使用End语句 182
8.6 用MseBox让用户做选择 184
第9天 循环 192
9.1 循环命令 192
9.2 固定的重复:For循环 194
9.2.1 使用For…Next循环 194
9.2.2 使用For Each…Next循环 200
12.4.3 改变当前驱动器名 202
9.3.1 理解VBA如何测试循环条件 203
9.3 不定循环:Do循环 203
9.3.2 使用在执行前检测条件的循环 205
12.6 重新命名和移动文件 207
9.3.3 使用在执行后检查条件的循环 209
9.4 提前结束循环 213
9.5 循环的嵌套 216
9.5.1 嵌套的For循环 216
9.5.2 Do循环的嵌套 218
第10天 进一步讨论数据类型和变量 223
10.1 得到变量和表达式的信息 223
10.1.1 使用VBA的数据信息函数 224
10.1.2 确定变量或表达式的数据类型 227
10.1.3 理解特殊值Empty和Null 232
10.2 可靠性编程:防止错误的发生 234
10.2.1 检查参数或其它交互值 234
10.2.2 使用户输入合法 235
10.2.3 使其它输入合法 239
10.3 在两次函数、过程调用之间保存数据 239
10.4.1 定义用户定义的数据类型 245
10.4 创建自己的数据类型 245
10.4.2 声明用户定义类型的变量 246
10.4.3 使用用户定义类型的变量 247
第11天 模块编程技术 256
11.1 更有效地使用模块 256
11.1.1 创建过程和函数库 257
11.1.2 使过程和函数库可用 258
11.2 多模块编程的作用域规则 262
11.2.1 理解私有和公用作用域 262
11.2.2 越过VBA作用域规则 263
11.2.3 理解和避免循环引用 267
11.2.4 理解和使用模块修饰名 268
11.3 理解结构编程技术 269
11.3.1 理解调用其它过程的过程 269
11.3.2 自顶向下的设计的逐步精化 271
11.4.1 理解何时和为什么要用参数表 273
11.3.3 用模块来组织编程工程 273
11.4 使用过程参数在过程间通信 273
11.4.2 说明过程参数表 274
11.4.3 使用带有参数的过程 275
第12天 用Visual Basic for Application管理文件 285
12.1 理解文件管理 285
12.1.1 什么是文件管理? 285
12.1.2 VBA文件管理功能综述 285
12.2.1 文件属性 286
12.2 使用文件属性 286
12.2.2 取得文件属性 287
12.2.3 改变文件属性 290
12.3 得到或查找文件名 292
12.3.1 使用方法GetOpenFilename 292
12.3.2 使用方法GetSaveAsFilename 295
12.3.3 使用函数Dir查找文件 297
12.4 使用磁盘驱动器和目录 300
12.4.1 得到当前目录和驱动器名 300
12.4.2 改变当前目录 301
12.4.4 创建磁盘目录 303
12.4.5 删除磁盘目录 304
12.5.1 复制文件 305
12.5 复制和删除文件 305
12.5.2 删除文件 306
12.7 得到关于文件的信息 309
12.7.1 得到文件的日期和时间信息 309
12.7.2 得到文件长度 310
第13天 数组 313
13.1 什么是数组? 313
13.2 起始下标选择语句 314
13.3 说明数组 314
13.4 应用数组 316
13.5 数组的重定义 319
13.6 LBound和UBound函数 323
13.7 清除数组 324
13.8 数组作为过程和函数的参数 325
13.9 排序 325
13.10 检索数组 330
13.10.1 使用线性法 332
13.10.2 使用二分法检索一个排序的数组 335
第14天 调试与测试 342
14.1 Bugs的基本种类 342
14.2 使用中断模式 342
14.2.2 通过设置中断点进入中断模式 343
14.2.1 通过错误对话框进入中断模式 343
14.2.3 通过使用Stop语句进入中断模式 344
14.2.4 在一个过程的起始进入中断模式 344
14.2.5 通过按下Esc或Ctrl+Break键进入中断模式 345
14.3 监测变量 345
14.3.1 加入监视表达式 347
14.3.2 编辑一个监视的表达式 348
14.3.3 删除一个监视表达式 349
14.3.4 使用即时监视 349
14.4 单步执行(跳过过程) 349
14.7 使用即时窗格 350
14.6 过程调用的追踪 350
14.5 单步执行(进入过程) 350
14.7.1 使用Debug.Print命令 351
第二周回顾 356
第15天 对话框与自定义控件 365
15.1 对话框控件一般性管理 366
15.1.1 插入一新的对话表 367
15.1.2 增加控件 367
15.1.3 操纵控件 368
15.1.4 设置控件的Tab键顺序 368
15.1.5 设置控件属性 369
15.2 具体的对话框控件操作 370
15.2.1 联结代码与控件 370
15.1.6 调用自定义控件 370
15.2.2 测试标记、编辑和按钮(Button)控件 371
15.2.3 测试组框和单选钮控件 374
15.2.4 测试核取(Check)框控件 378
15.2.5 测试滚动条和微调控制项控件 381
15.2.6 测试列表框控件 386
第16天 菜单和工具栏 392
16.1 Excel菜单栏 392
16.2 管理新菜单栏 392
16.2.1 增加新菜单栏 393
16.2.2 显示菜单栏 393
16.2.3 删除菜单栏 393
16.2.5 一个空菜单栏实例 394
16.2.4 恢复菜单栏 394
16.3 管理菜单 395
16.3.1 增加菜单 396
16.3.2 删除菜单 396
16.3.3 一个没有任何操作项的菜单栏例子 397
16.4 管理命令项 399
16.4.1 给菜单增加命令项 399
16.4.2 删除命令项 400
16.4.3 激活命令项 400
16.4.4 核取命令项 401
16.4.5 修改命令项名 401
16.4.6 增加子菜单 401
16.4.7 一个简单功能的菜单实例 402
16.5 管理工具栏 404
16.5.1 显示或隐藏内置工具栏 405
16.6 创建工具栏 408
16.6.1 创建自定义工具栏 408
16.6.2 显示工具栏 408
16.6.3 删除工具栏 408
16.6.4 恢复内置工具栏 409
16.6.5 增加工具栏按钮 409
16.6.6 删除工具栏钮 410
16.6.7 工具栏钮的操作 411
16.7 创建工具栏实例 412
17.2 On Error Goto语句 416
第17天 出错处理 416
17.1 出错处理策略 416
17.3 Resume语句 417
17.4 用Err和Erl函数查找非法语句 419
17.5 Error语句 422
17.6 出错处理的几个例子 423
17.6.1 含致命性错误的例子 423
17.6.2 处理错误的例子 425
17.6.3 重新执行非法语句的例子 427
17.6.4 使宏继续向下执行的例子 429
17.6.5 生成运行期错误 431
18.1.1 返回一个工作薄对象 437
18.1 使用工作薄对象 437
第18天 使用Excel 437
18.1.2 打开一个工作薄 438
18.1.3 创建一个新的工作薄 439
18.1.4 激活一个工作薄 440
18.1.5 保存一个工作薄 441
18.1.6 关闭一个工作薄 443
18.2 使用Worksheet对象 444
18.2.1 返回一个Worksheet对象 444
18.2.2 激活一个工作表 445
18.2.3 创建一个新工作表 446
18.2.5 复制和移动工作表 447
18.2.4 重新命名一个工作表 447
18.2.6 删除一个工作表 449
18.3 返回Range对象的几种方法 450
18.3.1 使用Range方法 450
18.3.2 使用Cells方法 451
18.3.3 使用Offset方法 453
18.3.4 其它的返回区域的方法和属性 454
18.4 使用单元格和区域 454
18.4.1 选定一个单元格或区域 454
18.4.2 使用数值和公式 455
18.4.3 定义一个区域名 457
18.4.4 数据的剪切、复制及清除 458
19.1.1 OLE的简要历史 464
第19天 使用其它应用程序:OLE及OLE自动化 464
19.1 什么是OLE? 464
19.1.2 关于Visual Basic for Applications中的OLE 466
19.2 加入链接的和嵌入的对象 466
19.2.1 对OLEObject集使用Add方法 466
19.2.2 查找对象的类类型 467
19.2.3 插入一个新的嵌入对象 469
19.2.4 将现存文件作为嵌入对象插入 470
19.2.5 将现存文件作为链接对象插入 470
19.3 使用链接的和嵌入的对象 471
19.3.1 一些OLE对象属性 472
19.3.2 一些OLE对象方法 473
19.4 使用OLE自动化 476
19.4.1 访问OLE自动化对象 477
19.4.2 直接访问对象 477
19.4.3 创建一个新的OLE自动化对象 478
19.4.4 访问一个已存在的OLE自动化对象 480
第20天 使用其它应用程序:DDE,DLLs及发送击键 484
20.1 启动其它应用程序 484
20.2 激活运行中的应用程序 486
20.3 使用动态数据交换 487
20.3.1 DDE基础 487
20.3.2 初始化Visual Basic与服务应用程序间的链接。 488
20.3.3 控制服务应用程序 490
20.3.4 与服务应用程序交换数据 493
20.4 向应用程序发送击键字符 496
20.5 从Visual Basic for Application中访问DLLs 499
20.5.1 声明DLL过程 499
20.5.1 一些DLL实例 500
第21天 使用自动化过程、事件过程以及加载宏 510
21.1 什么是自动化过程和事件过程 510
21.2 使用自动化过程 511
21.2.1 Auto_Open过程 511
21.2.2 Auto_Close过程 513
21.3 使用事件过程 514
21.3.1 OnSheetActivate属性 514
21.3.2 OnSheetDeactivate属性 516
21.3.3 OnWindow属性 517
21.3.4 Onkey方法 518
21.3.5 OnDoubleClick属性 520
21.3.6 OnTime方法 521
21.3.7 OnEntry属性 523
21.3.8 OnCalculate属性 525
21.4 使用加载宏应用程序 526
21.4.1 创建一个加载宏应用程序 526
21.4.2 用Visual Basic控制加载宏 527
第三周回顾 532
附录A 答案 539
附录B 应用实例 596