1、目 录一、VBA 语言基础 1第一节 标识符 .1第二节 运算符 .1第三节 数据类型 .1第四节 变量与常量 .1第五节 数组 .2第六节 注释和赋值语句 .2第七节 书写规范 .2第八节 判断语句 .2第九节 循环语句 .3第十节 其他类语句和错误语句处理 .4第十一节 过程和函数 .4一 Sub 过程 .4二 Function 函数 .5三 Property 属性过程和 Event 事件过程 5第十二节内部函数 5一测试函数 5二数学函数 5三字符串函数 6四转换函数 6五时间函数 6第十三节 文件操作 .6文件 6删除 7打开 7读入 7写入 7关闭 7其他文件函数 7二、VISUAL
2、 BASIC 程序设计网络教学 1第一课 VBA 是什么 11.1 VBA 是什么 .11.2 EXCEL 环境中基于应用程序自动化的优点 .11.3 录制简单的宏 21.4 执行宏 21.5 查看录制的代码 21.6 编辑录制的代码 31.7 录制宏的局限性 41.8 小结 4第二课 处理录制的宏 42.1 为宏指定快捷键 42.2 决定宏保存的位置 52.3 个人宏工作簿 52.3.1 保存宏到个人宏工作簿 52.3.2 使用并编辑个人宏工作簿中的宏 52.4 将宏指定给按钮 62.5 将宏指定给图片或其他对象 62.6 小结 7第三课 学习控件 73.1 EXCEL 开发过程简介 .73
3、.2 认识不同的控件 73.3 向工作表添加控件 73.4 设置控件的特性 83.5 给控件命名 83.6 使用用户窗体 83.7 疑难解答 9第四课 理解变量和变量的作用 94.1 代码存在的位置:模块 94.2 对模块的概览 104.2.1 创建过程 104.2.2 运行宏 114.3 保存对模块所做的改变 114.4 变量 114.4.1 变量的数据类型 114.4.2 用 Dim 语句创建变量 (声明变量 ).134.4.3 变量命名的惯例 134.4.4 使用数组 144.4.5 变量赋值 15第五课 利用 VBA 设置工作表使用权限 .151使用 WITH 语句。 .172使用对象
4、变量。 17方法 3:减少对象的激活和选择 .17方法 4:关闭屏幕更新 .18第六课 提高 EXCEL 中 VBA 的效率 .19方法 1:尽量使用 VBA 原有的属性、方法和 WORKSHEET 函数 19方法 2:尽量减少使用对象引用,尤其在循环中 .191使用 With 语句。 .192使用对象变量。 203在循环中要尽量减少对象的访问。 20方法 3:减少对象的激活和选择 .20方法 4:关闭屏幕更新 .20第七课 如何在 EXCEL 里使用定时器 20三、学习微软 EXCEL 2002 VBA 编程和 XML,ASP 技术 .22第一章 电子表格自动化简介和了解宏命令 221 了解
5、宏 .222 宏命令的普通应用 .223 写宏之前的计划 .234 录制宏 .245 运行宏 .266 修改宏代码 .267 添加注释 .298 分析宏代码 .299 清除宏代码 .3010 测试修改好的宏 .3111 两个层面运行宏的方法 .3212 完善你的宏代码 .3213 重新命名宏 .3414 运行宏的其它方法 .3415 使用键盘快捷键运行宏 .3416 通过菜单运行宏 .3517 通过工具栏按钮运行宏 .3718 通过工作表里面的按钮运行宏 .3819 保存宏 .3920 打印宏 .3921 保存宏在个人宏工作簿 .4022 打开含有宏的工作簿 .4123VB 编辑窗口 4224
6、 了解工程浏览窗口 .4325 了解属性窗口 .4326 了解代码窗口 .4427 VB 编辑器里的其它窗口 .4628 接下来 .46第二章 VBA 第一步 .461 了解指令,模块和过程 .472 VBA 工程命名 473 模块重命名 .484 从其它工程调用过程 .495 了解对象,属性和方法 .506 学习对象,属性和方法 .517 句法和文法 .538 打断很长的 VBA 语句 .559 了解 VBA 错误 .5510 查找帮助 .5711 语法和编程快捷助手 .5812 属性/方法列表 5913 常数列表 .5914 参数信息 .6015 快速信息 .6016 自动完成关键字 .6
7、017 缩进/凸出 6118 设置注释块/解除注释块 6119 使用对象浏览器 .6120 使用 VBA 对象库 .6621 用对象浏览器来定位过程 .6722 使用立即窗口 .6723 获取立即窗口里的信息 .6924 学习对象 .7025 电子表格单元格操作 .7026 使用 RANGE 属性 7027 使用 CELLS 属性 .7128 使用 OFFSET 属性 .7129 选择单元格的其它方法 .7230 选择行和列 .7331 获取工作表信息 .7332 往工作表输入数据 .7333 返回工作表中的信息 .7434 单元格格式 .7435 移动,复制和删除单元格 .7436 操作工作
8、簿和工作表 .7537 操作窗口(WINDOWS ) 7638 管理 EXCEL 应用程序 7639 接下来 .77第三章 了解变量,数据类型和常量 771 保存 VBA 语句的结果 .772 变量是什么 .773 数据类型 .784 如何产生变量 .785 如何声明变量 .796 明确变量的数据类型 .807 变量赋值 .818 强制声明变量 .849 了解变量范围 .8510 过程级别(当地)变量 .8511 模块级别变量 .8512 工程级别变量 .8613 变量的存活期 .8614 了解和使用静态变量 .8615 声明和使用对象变量 .8716 使用明确的对象变量 .8817 查找变量
9、定义 .8818 在 VB 过程里面使用常量 8919 内置常量 .8920 接下来 .90第四章 VBA 过程:子程序和函数 911.关于函数过程 .912.创建函数过程 .913.执行函数过程 .924.从工作表里运行函数过程 .935.从另外一个 VBA 过程里运行函数过程 .946.传递参数 .957.明确参数类型 .968.按地址和按值传递参数 .979.使用可选的参数 .9710.定位内置函数 .9811.使用 MSGBOX 函数 9912.MSGBOX 函数的运行值 .10313.使用 INPUTBOX 函数 10414.数据类型转变 .10515.使用 INPUTBOX 方法
10、10616.使用主过程和子过程 .10917.接下来 .111第五章 基于 VBA 做决定 .1111.关系和逻辑运算符 .1112.IFTHEN 语句 1123.基于多于一个条件的决定 .1144.THE IFTHENELSE 语句 1155.IFTHENELSEIF 语句 .1186.嵌套的 IFTHEN 语句 .1197.SELECT CASE 语句 .1208.和 CASE 子句一起使用 IS 1219.确定 CASE 子句里数值的范围 .12210.在 CASE 子句里确定多个表达式 .12311.接下来 .123第六章 在 VBA 中重复操作 .1231.DO LOOPS: DOW
11、HILE 和 DOUNTIL.1232.观察过程执行 .1263.WHILEWEND 循环 .1274.FORNEXT 循环 1285.FOR EACHNEXT 循环 1297.提前跳出循环 .1308.循环嵌套 .1319.接下来 .131第七章 利用 VBA 数组管理数据清单和表格 .1311.了解数组 .1322.声明数组 .1333.数组的上界和下界 .1334.在 VBA 过程里使用数组 .1345.数组和循环语句 .1356.使用二维数组 .1367.静态和动态数组 .1378.数组函数 .1399.ARRAY 函数 .13910.ISARRAY 函数 .14011.ERASE 函
12、数 14012.LBOUND 函数和 UBOUND 函数 .14113.数组中的错误 .14114.数组作为参数 .14315.接下来 .143第八章 利用 VBA 操纵文件和文件夹 .1441.获取当前文件夹的名称(CURD IR 函数) .1442.更改文件或文件夹名称(N AME 函数) 1453.检查文件或文件夹是否存在(D IR 函数) 1454.获得文件修改的日期和时间(FILEDATETIME 函数) 1475.获得文件大小(FILE LEN 函数) 1476.返回和设置文件属性(GETA TTR 函数和 SETATTR 函数) 1477.更改缺省文件夹或驱动器(CHDIR 语句
13、和 CHDRIVE 语句) 1498.创建和删除文件夹(MKDIR 语句和 RMDIR 语句) .1499.复制文件(FILE COPY 语句) 14910.删除文件(KILL 语句) 15111.从文件读取和写入数据(INPUT/OUTPUT) .15112.文件访问类型 .15213.使用顺序文件 .15214.读取储存于顺序文件里的数据 .15215.逐行读取文件 .15216.从顺序文件中读取字符 .15317.读取分隔文本文件 .15518.往顺序文件里写数据 .15519.使用 WRITE # 和 PRINT # 语句 15620.操作随机文件 .15721.创建用户定义的数据类型
14、 .15722.操作二进制文件 .16123.操作文件和文件夹的时髦方法 .16224.使用 WSH 获取文件信息 16425.FILESYSTEMOBJEC 的方法和属性 .16526.对象 FILE 的属性 16827.文件夹对象属性 .16928.驱动器对象属性 .16929.使用 WSH 创建文本文件 17030.使用 WSH 进行其它操作 17231.运行其它应用程序 .17232.创建快捷方式 .17333.接下来 .174第九章 利用 VBA 控制其它应用程序 .1741.启动应用程序 .1742.在应用程序之间切换 .1773.控制其它应用程序 .1774.控制应用程序的其它方
15、法 .1795.了解自动控制 .1796.了解链接和嵌入 .1807.使用 VBA 进行链接和嵌入 .1818.COM 和自动控制 .1829.了解绑定 .18210.后期绑定 .18211.早期绑定 .18212.建立到对象库的引用 .18313.创建自动控制对象 .18414.使用 CREATEOBJECT 函数 18415.使用自动控制创建一个新的 WORD 文档 .18516.使用 GETOBJECT 函数 18517.打开存在的 WORD 文档 .18618.使用关键字 NEW 18719.使用自动控制访问 MICROSOFT OUTLOOK 18820.接下来 .189第十章 对话
16、框和自定义窗体 1891.文件打开和另存为对话框 .1922.GETOPENFILENAME 和 GETSAVEASFILENAME 方法 .1963.创建窗体 .1974.创建用户窗体的工具 .1995.标签 .2006.文字框 .2007.框架 .2008.选项按钮 .2019.复选框 .20110.切换按钮 .20111.列表框 .20112.复合框 .20113.滚动条 .20114.旋转按钮 .20115.图像 .20116.多页控件 .20217.TABSTRIP 控件 20218.REFEDIT 控件 20219.在窗体上放置控件 .20220.应用程序示例 1:信息调查 202
17、21.在窗体上添加按钮、选项框和其它控件 .20422.更改控件名称 .20623.设置其它控件属性 .20624.准备工作表以储存窗体数据 .20725.显示自定义窗体 .20826.设置 TAB 顺序 20827.了解窗体和控件事件 .20928.编写 VBA 过程对窗体和控件事件反应 .21129.编写过程来初始化窗体 .21130.编写过程填充列表框控件 .21331.编写过程控制选项按钮 .21332.编写过程同步文字框和旋转按钮 .21433.编写过程关闭用户窗体 .21434.转移窗体数据到工作表 .21535.使用 INFO SURVEY 应用程序 .21636.应用程序示例
18、2:学生和考试 21637.使用多页和 TABSTRIP 控件 .21638.给窗体 STUDENTS AND EXAMS 自定义窗体编写 VBA 过程 21839.使用自定义窗体 STUDENTS AND EXAMS.22340.接下来 .225第十一章 自定义集合和类模块 2251.使用集合 .2262.声明自定义集合 .2273.给自定义集合添加对象 .2274.从自定义集合移出对象 .2285.创建自定义对象 .2296.创建类 .2297.变量声明 .2298.定义类的属性 .2309.创建 PROPERTY GET 过程 .23010.创建 PROPERTY LET 过程 .231
19、11.创建类方法 .23212.创建类的示例 .23213.类模块里的事件过程 .23214.创建用户界面 .23315.观察 VBA 过程的执行 .24216.接下来 .245第十二章 使用 VBA 创建自定义菜单和工具栏 .2451.工具栏 .2452.创建自定义工具栏 .2473.删除自定义工具栏 .2494.使用 COMMANDBAR 的属性 2495.使用 COMMANDBAR 控件 2496.理解和使用控件属性 .2517.控件方法 .2538.使用菜单 .2549.菜单编程 .25610.创建子菜单 .25811.修改内置快捷菜单 .26012.创建快捷菜单 .26213.接下来
20、 .264第十三章 调试 VBA 过程和处理错误 .2641.测试 VBA 过程 .2652.终止过程 .2653.使用断点 .2664.在中断模式下使用立即窗口 .2695.使用 STOP 语句 .2716.添加监视表达式 .2717.清除监视表达式 .2748.使用快速监视 .2749.使用本地窗口和调用堆栈对话框 .27510.逐句运行 VBA 过程 .27611.逐句运行过程 .27712.逐过程执行过程 .27713.设置下一条语句 .27814.显示下一条语句 .27915.终止和重新设置 VBA 过程 .27916.了解和使用条件编译 .27917.操纵书签 .28118.捕捉错
21、误 .28117.接下来 .285第十四章 微 软 EXCEL 2002 中的事件编 程 2851.事件过程 介绍 .2852.激活和失活事件 .2873.事件次序 .2894.工作表事件 .2895.工作簿事件 .2946.图表事件 .3127.内嵌图表事件 .3168.可为应用软件对象识别的事件 .3179.查询表时间 .32010.接下来 .323第十五章 在 EXCEL 里使用 ACCESS.3231.对象库 .3232.建立对对象库的引用 .3293.链接到 ACCESS .3294.使用 AUTOMATION 链接到 ACCESS 数据库 3315.使用 DAO 链接到 ACCES
22、S 数据库 3346.使用 ADO 链接到 ACCESS 数据库 3347.从 EXCEL 执行 ACCESS 任务 3368.创建新 ACCESS 数据库 .3369.打开 ACCESS 窗体 .33810.打开 ACCESS 报表 .34311.运行 ACCESS 查询 .34512.运行选择查询 .34713.运行参数 查询 .34814.调用 ACCESS 函数 .35015.获取 ACCESS 数据到 EXCEL 工作表 35016.使用 GETROWS 方法获取数据 .35017.使用 COPYFROMRECORDSET 方法获取数据 .35418.使用 TRANSFERSPREA
23、DSHEET 方法获取 数据 35419.使用 OPENDATABASE 方法 .35620.从 ACCESS 数据创建文本文件 .36021.从 ACCESS 数据创建查询表 .36322.在 EXCEL 里使用 ACCESS 数据 36523.用 ACCESS 数据创建内嵌图表 .36524.传输 EXCEL 电子表格到 ACCESS 数据库 36725.将 EXCEL 电子表格链接到 ACCESS 数据库 36926.将 EXCEL 电子表格导入 ACCESS 数据库 37027.放置 EXCEL 数据到 ACCESS 表中 37028.接下来 .374VBA 语言基础 橄榄树整理1一、
24、VBA 语言基础Zhou Jibin 2004-11-30第一节 标识符一定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。二命名规则1) 字母打头,由字母、数字和下划线组成,如 A987b_23Abc2) 字符长度小于 40, (Excel2002 以上中文版等,可以用汉字且长度可达 254 个字符)3) 不能与 VB 保留字重名,如 public, private, dim, goto, next, with, integer, single 等第二节 运算符定义:运算符是代表 VB 某种运算功能的符号。1)赋值运算符
25、=2)数学运算符 2. 过程名 参数 1, 参数 2debug.print x1,y1 结果是 12、112,y1 按地址传递改变了值,而 x1 按值传递,未改变原值End sub二Function 函数函数实际是实现一种映射,它通过一定的映射规则,完成运算并返回结果。参数传递也两种:按值传递(ByVal)和按地址传递(ByRef)。如下例:Function password(ByVal x as integer, byref y as integer) as booleanIf y=100 then y=x+y else y=x-yx=x+100if y=150 then password=
26、true else password=falseEnd FunctionSub call_password ()Dim x1 as integerDim y1 as integerx1=12y1=100if password then 调用函数:1. 作为一个表达式放在=右端 ; 2. 作为参数使用debug.print x1 end ifEnd sub三Property 属性过程和 Event 事件过程这是 VB 在对象功能上添加的两个过程,与对象特征密切相关,也是 VBA 比较重要组成,技术比较复杂,可以参考相关书籍。第十二节内部函数在 VBA 程序语言中有许多内置函数,可以帮助程序代码设
27、计和减少代码的编写工作。一测试函数IsNumeric(x) 是否为数字, 返回 Boolean 结果,True or FalseIsDate(x) 是否是日期, 返回 Boolean 结果,True or FalseIsEmpty(x) 是否为 Empty, 返回 Boolean 结果,True or FalseIsArray(x) 指出变量是否为一个数组。IsError(expression) 指出表达式是否为一个错误值IsNull(expression) 指出表达式是否不包含任何有效数据 (Null)。IsObject(identifier)指出标识符是否表示对象变量二数学函数Sin(X)
28、、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度Log(x) 返回 x 的自然对数Exp(x)返回 e xAbs(x) 返回绝对值Int(number)、Fix(number) 都返回参数的整数部分,区别: Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8Sgn(number) 返回一个 Variant (Integer),指出参数的正负号VBA 语言基础 橄榄树整理6Sqr(number) 返回一个 Double,指定参数的平方根VarType(varname) 返回一个 Integer,指出变量的子类型Rnd(x)返回 0-1 之间的单精度数据,x
29、 为随机种子三字符串函数Trim(string) 去掉 string 左右两端空白Ltrim(string) 去掉 string 左端空白Rtrim(string) 去掉 string 右端空白Len(string) 计算 string 长度Left(string, x) 取 string 左段 x 个字符组成的字符串Right(string, x) 取 string 右段 x 个字符组成的字符串Mid(string, start,x) 取 string 从 start 位开始的 x 个字符组成的字符串Ucase(string) 转换为大写Lcase(string) 转换为小写Space(x)
30、 返回 x 个空白的字符串Asc(string) 返回一个 integer,代表字符串中首字母的字符代码Chr(charcode) 返回 string,其中包含有与指定的字符代码相关的字符四转换函数CBool(expression) 转换为 Boolean 型CByte(expression) 转换为 Byte 型CCur(expression) 转换为 Currency 型CDate(expression) 转换为 Date 型CDbl(expression) 转换为 Double 型CDec(expression) 转换为 Decemal 型CInt(expression) 转换为 Int
31、eger 型CLng(expression) 转换为 Long 型CSng(expression) 转换为 Single 型CStr(expression) 转换为 String 型CVar(expression) 转换为 Variant 型Val(string) 转换为数据型Str(number) 转换为 String五时间函数Now 返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。Date 返回包含系统日期的 Variant (Date)。Time 返回一个指明当前系统时间的 Variant (Date)。Timer 返回一个 Single,代表从午
32、夜开始到现在经过的秒数。TimeSerial(hour, minute, second) 返回一个 Variant (Date),包含具有具体时、分、秒的时间。DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear) 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目Second(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒Minute(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,
33、表示一小时中的某分钟Hour(time) 返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点Day(date) 返回一个 Variant (Integer),其值为 1 到 31 之间的整数,表示一个月中的某一日Month(date) 返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月Year(date) 返回 Variant (Integer),包含表示年份的整数。Weekday(date, firstdayofweek) 返回一个 Variant (Integer),包含一个整数,代表某个日期
34、是星期几VBA 语言基础 橄榄树整理7第十三节 文件操作文件 Dir(pathname, attributes) ;pathname 可选参数,用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 (“); attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。删除 Kill pathname 从磁盘中删除文件, pathname 参数是用来指定一个文件名RmDir pathname 从磁盘中删除删除目录,pathname 参数是用来指定一个文件夹打
35、开Open pathname For mode Access access lock As #filenumber Len=reclength 能够对文件输入/输出 (I/O)。pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。 mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。 lock 可选。关键字,说明限定于其
36、它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。 filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。说明 对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用
37、 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。读入Input #filenumber, varlist 从已打开的顺序文件中读出数据并将数据指定给变量Get #f
38、ilenumber, recnumber, varname 将一个已打开的磁盘文件读入一个变量之中。写入Write #filenumber, outputlist 将数据写入顺序文件Print #filenumber, outputlist 将格式化显示的数据写入顺序文件中Put #filenumber, recnumber, varname 将一个变量的数据写入磁盘文件中。关闭Close filenumberlist 关闭 Open 语句所打开的输入/输出 (I/O) 文件注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写
39、入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。Write 与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。Write # 语句在将 outputlist 中的最后一个字符写入文件后会插入一个新行字符,即回车换行符,(Chr(13) + Chr(10)。其他文件函数LOF(filenumber) 返回一个 Long,表示用 Open 语句打开的文件的大小,该大小以字节为单位。EOF(filenum
40、ber) 返回一个 Integer,它包含 Boolean 值 True,表明已经到达为 Random 或顺序 Input 打开的文件的结尾。Loc(filenumber) 返回一个 Long,在已打开的文件中指定当前读/写位置Seek(filenumber) 返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位Visual BASIC 程序设计网络教学 橄榄树整理1二、Visual BASIC 程序设计网络教学第一课 VBA 是什么1.1 VBA 是什么直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.
41、例如:可以用 EXCEL 的宏语言来使 EXCEL 自动化,使用 WORD BASIC 使 WORD 自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言-Visual Basic For Application(VBA),可以认为 VBA 是非常流行的应用程序开发语言 VASUAL BASIC 的子集.实际上 VBA 是“寄生于“VB 应用程序的版本.VBA和 VB 的区别包括如下几个方面: 1. VB 是设计用于创建标准的应用程序,而 VBA 是使已有的应用程序(EXCEL 等)自动化2. VB 具有自己的开发环境,而 VBA 必须寄生于已有的应用程序.3. 要运行 VB
42、开发的应用程序,用户不必安装 VB,因为 VB 开发出的应用程序是可执行文件(*.EXE),而 VBA 开发的程序必须依赖于它的“父“应用程序,例如 EXCEL. 尽管存在这些不同,VBA 和 VB 在结构上仍然十分相似.事实上,如果你已经了解了 VB,会发现学习 VBA 非常快.相应的,学完 VBA 会给学习 VB 打下坚实的基础.而且,当学会在 EXCEL中用 VBA 创建解决方案后,即已具备在 WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA 创建解决方案的大部分知识.* VBA 一个关键特征是你所学的知识在微软的一些产品中可以相互转化.* VBA
43、 可以称作 EXCEL 的“遥控器“.VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案. 此外,如果你愿意,还可以将 EXCEL 用做开发平台实现应用程序.1.2 EXCEL 环境中基于应用程序自动化的优点 也许你想知道 VBA 可以干什么?使用 VBA 可以实现的功能包括: 1. 使重复的任务自动化.2. 自定义 EXCEL 工具栏,菜单和界面.3. 简化模板的使用.4. 自定义 EXCEL,使其成为开发平台.5. 创建报表.6. 对数据进行复杂的操作和分析.用 EXCEL 作为开发平台有如下原因: 1. EXCEL 本身功能强大,包括打
44、印,文件处理,格式化和文本编辑.2. EXCEL 内置大量函数.3. EXCEL 界面熟悉.4. 可连接到多种数据库.用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等.而用 EXCEL 作为开发平台,则由于 EXCEL 已经具备这些基本功能,你要做的只是使用它.Visual BASIC 程序设计网络教学 橄榄树整理21.3 录制简单的宏 在介绍学习 VBA 之前,应该花几分钟录制一个宏。新术语:“宏“,指一系列 EXCEL 能够执行的 VBA 语句。 以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤: 1)打开新工作簿,确认其他工作簿已
45、经关闭。2)选择 A1 单元格。调出“常用“工具栏。3)选择“工具“-“宏“-“录制新宏“。4)输入“改变颜色“作为宏名替换默认宏名,单击确定,注意,此时状态栏中显示“录制“,特别是“停止录制“工具栏也显示出来。替换默认宏名主要是便于分别这些宏。 宏名最多可为 255 个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。5)选择“格式“的“单元格“,选择“图案“选项中的红色,单击“确定“。6)单击“停止录制“工具栏按钮,结束宏录制过程。 如果“停止录制“工具栏开始并未出现,请选择“工具“-“宏“-“停止录制“。录制完一个宏后就可以执行
46、它了。1.4 执行宏当执行一个宏时,EXCEL 按照宏语句执行的情况就像 VBA 代码在对 EXCEL 进行“遥控“。但 VBA 的“遥控“不仅能使操作变得简便,还能使你获得一些使用 EXCEL 标准命令所无法实现的功能。而且,一旦熟悉了 EXCEL 的“遥控“,你都会奇怪自己在没有这些“遥控“的情况下,到底是怎么熬过来的。要执行刚才录制的宏,可以按以下步骤进行: 1)选择任何一个单元格,比如 A3。2)选择“工具“-“宏“-“宏“,显示“宏“对话框。3)选择“改变颜色“,选择“执行“,则 A3 单元格的颜色变为红色。试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。1.5
47、 查看录制的代码到底是什么在控制 EXCEL 的运行呢?你可能有些疑惑.好,让我们看看 VBA 的语句吧. 1)选择“工具“-“宏“-“宏“,显示“宏“对话框。2)单击列表中的“改变颜色“,选择“编辑“按钮。 此时,会打开 VBA 的编辑器窗口(VBE) 。关于该编辑器,以后再详细说明,先将注意力集中到显示的代码上。代码如下:(日期和姓名会有不同)Sub 改变颜色() 改变颜色 Macro xw 记录的宏 2000-6-10Visual BASIC 程序设计网络教学 橄榄树整理3With Selection.Interior.ColorIndex = 3.Pattern = xlSolid.P
48、atternColorIndex = xlAutomaticEnd WithEnd Sub将来会十分熟悉这种代码,虽然现在它们看上去像一种奇怪的外语。学习 VBA 或编程语言在某种程度上比较像在学习一种外语。Sub 改变颜色():这是宏的名称。中间的以“ “开头的五行称为“注释“,它在录制宏时自动产生。以 With 开头到 End With 结束的结构是 With 结构语句,这段语句是宏的主要部分。注意单词“selection“,它代表“突出显示的区域“(即:选定区域) 。With Selection.Interior :它读作“选择区域的的内部“.这整段语句设置该区域内部的一些“属性“。其中
49、:.ColorIndex = 3: 将该内部设为红色。注意:有一小圆点,它的作用在于简化语句,小圆点代替出现在 With 后的词,它是 With 结构的一部分。另外:红色被数字化为 3.(红色警戒是否可称作:3 号警戒,嗯?)有兴趣的话,你将 3 改为其他数字试试看。.Pattern = xlSolid:设置该区域的内部图案。由于是录制宏,所以,虽然你并未设置这一项,宏仍然将其记录下来(因为在“图案“选项中有此一项,只是你为曾设置而已) 。xlSolid 表示纯色。.PatternColorIndex = xlAutomatic:表示内部图案底纹颜色为自动配色。End With:结束 With 语句。End Sub:整个宏的结束语1.6 编辑录制的代码 在上一节,我们录制了一个宏并查看了代码,代