一、VBA语言基础第一节 标识符一.定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。二.命名规则1) 字母打头,由字母、数字和下划线组成,如 A987b_23Abc2) 字符长度小于40,(Excel2002以上中文版等,可以用汉字且长度可达254个字符)3) 不能与VB保留字重名,如public, private, dim, goto, next, with, integer, single等
一、VBA语言基础
第一节 标识符
一.定义
标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。
二.命名规则
1) 字母打头,由字母、数字和下划线组成,如 A987b_23Abc
2) 字符长度小于40,(Excel2002以上中文版等,可以用汉字且长度可达254个字符)
3) 不能与VB保留字重名,如public, private, dim, goto, next, with, integer, single等
第二节 运算符
定义:运算符是代表VB某种运算功能的符号。
1)赋值运算符 =
2)数学运算符 &、+ (字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
3)逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)
4)关系运算符 = (相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is
5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)
12楼
二.数学函数
Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度
Log(x) 返回x的自然对数
Exp(x)返回 ex
Abs(x) 返回绝对值
Int(number)、Fix(number) 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8
Sgn(number) 返回一个 Variant (Integer),指出参数的正负号
Sqr(number) 返回一个 Double,指定参数的平方根
VarType(varname) 返回一个 Integer,指出变量的子类型
Rnd(x)返回0-1之间的单精度数据,x为随机种子
三.字符串函数
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) 返回x个空白的字符串
Asc(string) 返回一个 integer,代表字符串中首字母的字符代码
Chr(charcode) 返回 string,其中包含有与指定的字符代码相关的字符
回复
13楼
四.转换函数
CBool(expression) 转换为Boolean型
CByte(expression) 转换为Byte型
CCur(expression) 转换为Currency型
CDate(expression) 转换为Date型
CDbl(expression) 转换为Double型
CDec(expression) 转换为Decemal型
CInt(expression) 转换为Integer型
CLng(expression) 转换为Long型
CSng(expression) 转换为Single型
CStr(expression) 转换为String型
CVar(expression) 转换为Variant型
Val(string) 转换为数据型
Str(number) 转换为String
回复
14楼
五.时间函数
Now 返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。
Date 返回包含系统日期的 Variant (Date)。
Time 返回一个指明当前系统时间的 Variant (Date)。
Timer 返回一个 Single,代表从午夜开始到现在经过的秒数。
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 之间的整数,表示一小时中的某分钟
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),包含一个整数,代表某个日期是星期几
回复
15楼
第十三节 文件操作
文件
Dir[(pathname[, attributes])] ;pathname 可选参数,用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 (""); attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。
删除
Kill pathname 从磁盘中删除文件, pathname 参数是用来指定一个文件名
RmDir pathname 从磁盘中删除删除目录,pathname 参数是用来指定一个文件夹
打开
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 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。
filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。
说明 对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。
重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。
回复
16楼
写入
Write #filenumber, [outputlist] 将数据写入顺序文件
Print #filenumber, [outputlist] 将格式化显示的数据写入顺序文件中
Put [#]filenumber, [recnumber], varname 将一个变量的数据写入磁盘文件中。
关闭
Close [filenumberlist] 关闭 Open 语句所打开的输入/输出 (I/O) 文件
注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。Write 与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。Write # 语句在将 outputlist 中的最后一个字符写入文件后会插入一个新行字符,即回车换行符,(Chr(13) + Chr(10))。
其他文件函数
LOF(filenumber) 返回一个 Long,表示用 Open 语句打开的文件的大小,该大小以字节为单位。
EOF(filenumber) 返回一个 Integer,它包含 Boolean 值 True,表明已经到达为 Random 或顺序 Input 打开的文件的结尾。
Loc(filenumber) 返回一个 Long,在已打开的文件中指定当前读/写位置
Seek(filenumber) 返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位
回复
17楼
二、Visual BASIC程序设计网络教学
第一课 VBA是什么
1.1 VBA是什么
直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用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开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.
尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.
* VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.
* VBA可以称作EXCEL的"遥控器".
VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.
此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.
回复
18楼
1.2 EXCEL环境中基于应用程序自动化的优点
也许你想知道VBA可以干什么?使用VBA可以实现的功能包括:
1. 使重复的任务自动化.
2. 自定义EXCEL工具栏,菜单和界面.
3. 简化模板的使用.
4. 自定义EXCEL,使其成为开发平台.
5. 创建报表.
6. 对数据进行复杂的操作和分析.
用EXCEL作为开发平台有如下原因:
1. EXCEL本身功能强大,包括打印,文件处理,格式化和文本编辑.
2. EXCEL内置大量函数.
3. EXCEL界面熟悉.
4. 可连接到多种数据库.
用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等.而用EXCEL作为开发平台,则由于EXCEL已经具备这些基本功能,你要做的只是使用它.
回复
19楼
1.3 录制简单的宏
在介绍学习VBA之前,应该花几分钟录制一个宏。
新术语:"宏",指一系列EXCEL能够执行的VBA语句。
以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤:
1)打开新工作簿,确认其他工作簿已经关闭。
2)选择A1单元格。调出"常用"工具栏。
3)选择"工具"-"宏"-"录制新宏"。
4)输入"改变颜色"作为宏名替换默认宏名,单击确定,注意,此时状态栏中显示"录制",特别是"停止录制"工具栏也显示出来。替换默认宏名主要是便于分别这些宏。
★ 宏名最多可为255个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。
5)选择"格式"的"单元格",选择"图案"选项中的红色,单击"确定"。
6)单击"停止录制"工具栏按钮,结束宏录制过程。
※ 如果"停止录制"工具栏开始并未出现,请选择"工具"-"宏"-"停止录制"。
录制完一个宏后就可以执行它了。
回复
20楼
1.4 执行宏
当执行一个宏时,EXCEL按照宏语句执行的情况就像VBA代码在对EXCEL进行"遥控"。但VBA的"遥控"不仅能使操作变得简便,还能使你获得一些使用EXCEL标准命令所无法实现的功能。而且,一旦熟悉了EXCEL的"遥控",你都会奇怪自己在没有这些"遥控"的情况下,到底是怎么熬过来的。要执行刚才录制的宏,可以按以下步骤进行:
1)选择任何一个单元格,比如A3。
2)选择"工具"-"宏"-"宏",显示"宏"对话框。
3)选择"改变颜色",选择"执行",则A3单元格的颜色变为红色。试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。
回复
21楼
1.5 查看录制的代码
到底是什么在控制EXCEL的运行呢?你可能有些疑惑.好,让我们看看VBA的语句吧.
1)选择"工具"-"宏"-"宏",显示"宏"对话框。
2)单击列表中的"改变颜色",选择"编辑"按钮。
此时,会打开VBA的编辑器窗口(VBE)。关于该编辑器,以后再详细说明,先将注意力集中到显示的代码上。代码如下:(日期和姓名会有不同)
Sub 改变颜色()
’
’ 改变颜色 Macro
’ xw 记录的宏 2000-6-10
’
’
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub
回复