第1篇 VBA的要素 3
1 概述 3
1.1 BASIC的评价 3
1.2 基本编程 5
1.2.1 宏 5
1.2.2 编制宏(Macros) 6
1.3 动态数据交换(Dynamic Data Exchange—DDE) 12
1.3.1 对象链接和嵌入(Object Linking and Embedding—OLE) 12
1.3.2 链接(Linking) 12
1.3.3 对象链接术语 15
1.3.4 直接动态数据交换(Direct Dynamic Data Exchange) 16
1.3.5 直接动态数据交换:VBA与Visual Basic 18
1.3.6 具备OLE的程序 21
1.4 一个简单面又神奇的示例 23
2 可视界面 26
2.1 Visual Basic语言 26
2.2 VBA工具栏的动作按钮 28
2.2.1 编辑代码(Edit Code)按钮 29
2.2.2 执行对话框(Run Dialog)按钮 30
2.2.3 控制属性(Control Properties)按钮 32
2.2.4 网格线开关(Toggle Grid)按钮 33
2.3 VBA工具栏上的控制按扭 33
2.3.1 标记(Label) 33
2.3.2 编辑框(Edit Box)按钮 34
2.3.3 分组框(Group Box)按钮 36
2.3.4 按钮创建(Create Button)按钮 37
2.3.5 选择框(Check Box)按钮 38
2.3.6 选项(Option)按钮 39
2.3.7 列表框(List Box)按钮 40
2.3.8 下拉列表框(Drop-Down List Box)按钮 41
2.3.9 滚动条(Scroll Bar)按钮 42
2.3.10 微调控制(Spinner)按钮 45
2.4 显示对话框(Displaying Dialog Boxes) 46
2.4.1 添加一个按钮 46
2.4.2 对用户的反馈 50
2.4.3 选菜单显示对话框 53
2.4.4 用过程显示对话框 55
2.4.5 对话框事件 55
2.5 数组(Arrays)定义 57
2.6 对话框仓库 59
3 基本VBA编程 61
3.1 记录与编程 61
3.1.1 用VBA记录宏 61
3.1.2 用AccessBasic记录宏 65
3.1.3 用WordBasic记录宏 66
3.1.4 在Visual Basic 3.0中键入宏 66
3.1.5 编写宏和程序 68
3.2 过程 68
3.2.1 子程序 69
3.2.2 函数:另一种过程 72
3.2.3 内置函数(Built-In Function) 74
3.3 函数与子程序 74
3.3.1 传递变量 75
3.4 过程的重要性 77
3.4.1 告别ByVal 78
3.4.2 非保护变量 78
3.4.3 有关过程的某些规定 79
3.5 变量 80
3.5.1 创建变量 81
3.5.2 作用域(Scope) 81
3.6 表达式(Expressions) 83
3.6.1 表达式的真伪(Expressions True & False) 84
3.7 算术运算符 86
3.7.1 变体变量 86
3.8 逻辑运算符 87
3.8.1 运算符的优先级 88
3.8.2 组合表达式 89
3.9 变量与常量 89
3.9.1 不宜用常量的场合 90
3.9.2 宜用常量的场合 90
3.10 数组一聚类变量 91
3.10.1 两种变量:正文与数值 91
3.10.2 两种正文变量 91
3.11 数值变量的种类 92
3.11.1 变体变量的特殊性 92
3.11.2 IsDate、IsEmpty、IsNumeric和IsNull命令 94
3.11.3 关于使用变体变量的说明 95
3.11.4 NULL特性 95
3.12 变量类型之间的区别 96
3.12.1 特殊问题特殊处理 96
3.13 数字类型符号与示例 98
3.14 定长及动态正文变量 98
3.14.1 经验之谈 99
3.15 用户自定义变量类型 100
3.15.1 创建Type结构 101
4 完美的集成 105
4.1 对象 105
4.2 包含对象与对象集合 106
4.2.1 命名的参数 107
4.3 定位对象 107
4.3.1 关联感应菜单 108
4.4 联机帮助 109
4.5 对象的价值 112
4.5.1 性质相同标点不同 113
4.6 属性的进一步说明 114
4.6.1 属性的用途 116
4.6.2 区分个性 116
4.6.3 汽车内的驼峰 117
4.7 方法与对象 117
4.8 自我滚动 118
4.8.1 对象变量与普通变量 118
4.9 为什么要用对象变量 123
4.10 普通与特殊对象 123
5 设计第一个VBA应用程序 126
5.1 On陷阱(捕获) 127
5.2 VBA事件 129
5.3 应用程序 131
5.3.1 目的 131
5.3.2 陷阱双击 132
5.4 其它的自动过程 132
5.5 简单提一下Let命令 135
5.6 单击了哪个单元格 137
5.7 一种简易的方法 139
5.7.1 致命的弱点 139
5.8 获得文件名 139
5.8.1 无限非线性回归拖曳计算法 142
5.9 On-Traps(On陷阱) 143
5.9.1 OnTime陷阱 143
5.9.2 规定的时间 144
5.10 VBA如何计算时间 145
5.11 OnSheerActivate陷阱 146
5.11.1 附加一个WAV文件 146
5.11.2 指定特定的工作簿 147
5.12 OnWindow陷阱 147
5.13 OnKey陷阱 148
5.14 On Calculate陷阱 149
5.15 OnEntry陷阱 150
5.16 OnData陷阱 150
5.17 OriRepeaat与OnUndo陷阱 151
6 调试与错误处理 153
6.1 书写错误(Typos) 153
6.1.1 通常错误——检查选项 156
6.2 运行时间错误:困绕用户 157
6.2.1 On Error 157
6.2.2 关于fOn Error的进一步说明 159
6.2.3 恰当地使用On Error 160
6.2.4 On Error Resyne Next 162
6.2.5 On Error GoTo Fixit 163
6.3 另一条途径(A Diffrent Approach) 164
6.3.1 On Local Error Resume Next 165
6.3.2 何时使有错误自陷 165
6.3.3 监视什么 165
6.3.4 乌尔(伊拉克的古城址)王国中的王位继承 166
6.3.5 最后一个示例 166
6.3.6 人为地制造错误 167
6.3.7 使用Error语句 167
6.8.8 当用户按Esc键时 168
6.3.9 防止用户干预 169
6.4 逻辑错误 170
6.4.1 怎么办 170
6.4.2 立即窗口 173
6.4.3 使用运行(Run)菜单 174
6.4.4 在处理过程中进行编辑 174
6.5 其它运行(Run)菜单按钮 175
6.5.1 是不是在忽略一个过程? 177
6.5.2 监视:智能断点 177
6.6 排除故障:纵览 179
7 OLE自动化与API 183
7.1 对象服务服务自动化 183
7.2 从Excel接触Word 184
7.3 来自Project的自动化 187
7.4 其它方法:Project的自动化 188
7.5 如果你有问题 190
7.6 来自Visual Basic的自动化 191
7.7 哪些应用程序具备OLE自动化? 192
7.8 更深的层次:触发宏 194
7.9 借用Word的拼写检查器 196
7.10 运用Visual Basic的字计数功能 198
7.11 在Excel内进行字计数 198
7.12 Curvalues发电站 199
7.13 一些API实验 200
7.14 库动态 201
7.14.1 动态链接库的优点 201
7.15 工作中的DLLs 202
7.16 把API传递下去 202
7.17 如果你有了问题 205
VBA的发展前景 206
第2篇 扩展BASIC命令 209
8 扩展BASIC命令 209
8.1 本篇内容 211
8.2 本篇的组织 211
8.3 为什么说VBA不仅仅是BASIC 212
8.4 如果遇到麻烦 212
8.5 术语 213
8.5.1 对象 213
8.5.2 属性 213
8.5.3 方法 213
8.5.4 关键字 214
8.5.5 语句 214
8.5.6 函数 214
8.6 VBA的新命令 214
8.6.1 Activate(方法) 214
8.6.2 ActivateMicrosoftApp(方法) 215
8.6.3 ActivateNext,ActivatePrevious(方法) 216
8.6.4 Add(方法) 217
8.6.5 Arrange(方法) 219
8.6.6 Array(函数) 220
8.6.7 BringToFront,SendToBack(方法) 221
8.6.8 ByRef和ByVal(关键字) 223
8.6.9 Characters(方法) 226
8.6.10 CheckSpelling(方法) 228
8.6.11 Collection(对象) 229
8.6.12 Copy(方法) 234
8.6.13 CopyFace(方法) 235
8.6.14 Copy Picture(方法) 236
8.6.15 Cut(方法) 238
8.6.16 Delete(方法) 239
8.6.17 Dialogs(方法) 241
8.6.18 DoubleClick(对象) 243
8.6.19 Duplicate(方法) 244
8.6.20 Edit(方法) 245
8.6.21 EditBox,EditBoxes(对象) 245
8.6.22 Evaluate(方法) 246
8.6.23 FindFile(方法) 249
8.6.24 For…Each(语句) 249
8.6.25 Function or Subroutine(过程) 251
8.6.26 GetObject(函数) 251
8.6.27 GetOpenFileName(方法) 251
8.6.28 GetSaveAsFileName(方法) 253
8.6.29 Goto(方法) 254
8.6.30 Group 257
8.6.31 Group Ungroup(方法) 257
8.6.32 GroupObjects(对象) 259
8.6.33 Help(方法) 261
8.6.34 InchesToPoints(方法) 261
8.6.35 InsertFile(方法) 263
8.6.36 Item(方法) 264
8.6.37 LargeSeroll,SmallSeroll(方法) 265
8.6.38 MenuBars(方法) 266
8.6.39 Menultems(方法) 268
8.6.40 Menus(方法) 269
8.6.41 Modules(方法/对象) 269
8.6.42 Move(方法) 270
8.6.43 NamedArguments(参数) 271
8.6.44 NewWindow(方法) 272
8.6.45 OnKey,OnRepeat,OnTime,OnUndo 272
8.6.46 Option Private Module(描述) 272
8.6.47 Paste(方法) 273
8.6.48 PasteFace(方法) 274
8.6.49 Pictures(方法/对象) 274
8.6.50 Print(方法) 275
8.6.51 PrintOut,PrintPreview(方法) 277
8.6.52 Private(语句) 277
8.6.53 Property Get.Property Let.Property Set 278
8.6.54 Property Procedure(过程) 278
8.6.55 Public(AKA"GLOBAL")(语句) 281
8.6.56 Quit(方法) 284
8.6.57 Range(方法/对象) 284
8.6.58 SendToBack 286
8.6.59 ToolBarButoons.ToolBars 286
8.6.60 Trim(函数) 286
8.6.61 Type(语句) 288
8.6.62 TypeName(函数) 293
8.6.63 Wait(办法) 294
8.6.64 Windows(方法/对象) 295