office开发教程4Word格式文档下载.docx
《office开发教程4Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《office开发教程4Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
字符长度(0-65400)
字节型Byte
无
1
布尔型Boolean
无
2
整数型Integer
%
长整数型Long
&
4
单精度型Single
!
双精度型Double
#
8
日期型Date
8公元100/1/1-9999/12/31
货币型Currency
@
小数点型Decimal
14
变体型Variant
以上任意类型,可变
对象型Object
此外,用户还可以根据需要自己定义这些类型之外的数据类型,方法如下:
Type数据类型名
数据类型元素名as类型名
……
EndType
示例1:
定义一个新的日期类型:
TypeDate_rec
rYearAsInteger
rMonthAsStrings*3
rDayAsInteger
EndType
自定义数据类型的引用
Date_rec.rYear=1982
三、常量与变量
1常量
常量是指在应用程序中其值不发生变化的数据,如:
123、3.14、“student”、2009-1-1等,也就是说常量是具体的数据,还有一种情况是使用一个标识符代表一个常量,这才是我们通常所说的常量。
而当需要存储静态信息时,可以使用常量。
使用常量有两个原因:
(1)常量可以存放数值供程序运行时多次引用而不改变;
(2)使用常量可以增加程序的可读性,例如BookTitle比“office2003应用程序开发”要容易记忆和修改。
要声明常量并设定常量的值,需要使用Const语句。
常量声明后,不能对它赋一个新的数值。
例如,假设需要声明一个常量来保存书本价格,可以使用如下语句:
ConstBOOKPRICEAsLong=23.50
可以在Const语句中可以指定数据类型。
常量的命名惯例是全部字母都用大写,这样就容易区分代码中的变量和常量。
2.变量
变量用于保存在程序运行过程中需要临时保存的值或对象,变量具有不同的类型,例如整型、浮点型(见本项目任务二的数据类型部分),变量可能包含不同的数值,在程序运行时,变量的数值可以改变。
定义变量可以使用Dim语句:
Dim变量名As数据类型
掌握要点:
(1)变量的名称要符合前面讲到的关于标识符的命名规则;
(2)变量定义中要特别注意的一个问题是,VBA的变量定义,每个变量之后必须加“As数据类型”,例如:
DimiAsLong,jAsLong
如果没有提供数据类型,变量将被指定为Variant类型,因为VBA中默认的数据类型是Variant,Variant类型一般来说,要占用更多空间(16字节),运行速度也会更慢一些(根据不同数据类型,从基本无差别到大概慢0.5~1倍)。
对于模块级别的变量,可以使用Public、Private来定义(见后续的关于模块的任务)。
(3)as后面的数据类型,也可以是一个对象名称,这时的变量就成为一个对象变量,它所表示的不是简单的数据
3.变量的作用域:
变量保留其值的这段时间,称为作用域或生存周期。
变量的值可能在整个生存周期都在改变,但它仍然保留着一些值。
当变量失去了范围之后,它也就不再保存着任一个值。
当过程开始运行时,所有的变量都会被初始化。
一个数值变量会初始化成0,变长字符串被初始化成零长度的字符串("
"
),而定长字符串会被填满ASCII字符码0所表示的字符或是Chr(0)。
Variant变量会被初始化成Empty。
用户定义类型中每一个元素变量会被当成个别变量来做初始化。
当声明一个对象变量(详细介绍见后)时,内存中虽有保留空间,但它的值会被设置成Nothing,直到利用Set语句对它指定一个对象引用。
如果在代码的运行期间,变量的值一直没有改变,则它会继续保有它的初始值直到它丢失范围为止。
Dim语句声明过程的级别变量将保留一个值,直到此过程退出为止。
如果该过程调用其它的过程,则在这些过程正在运行的同时,属于调用者过程的变量也保留它的值。
如果过程的级别变量是用Static关键字来声明的,则只要代码正在任何模块中运行此变量仍会保留它的值。
而当所有的代码都完成运行后,变量会失去它的范围和它的值。
所以它的存活期和模块级别的变量是一样的。
模块级别的变量与静态变量是不同的。
在标准模块或类模块中变量会保留它的值,直到停止运行代码。
在对象类模块中,只要仍有一个属于此对象类的实例存在,则变量会一直保留它的值。
模块级别的变量会一直占用内存资源,直到重新设置它们的值,所以只有在必要时才使用它们。
如果在Sub或Function语句前加上Static关键字,则在此过程中所有过程级别的变量的值被保留在调用期间。
任务二运算符及其优先顺序
一、运算符:
运算符是代表VBA某种运算功能的符号。
分类介绍如下:
1)赋值运算符=
2)算术运算符&
、+(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
3)逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)
4)关系运算符=(相同)、<
>
(不等)、>
(大于)、<
(小于)、>
=(不小于)、<
=(不大于)
二、运算符的优先顺序:
当一个表达式牵扯到多个运算符时,就必须考虑运算符的优先顺序。
运算符的优先顺序是指在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。
在表达式中,当运算符不止一种时,要先处理算术运算符,接着处理比较运算符,然
后再处理逻辑运算符。
所有比较运算符的优先顺序都相同;
也就是说,要按它们出现的顺
序从左到右进行处理。
而算术运算符和逻辑运算符则必须按下列优先顺序(由上至下)进
行处理(如表4-2所示)。
可以用括号改变优先顺序,强令表达式的某些部分优先运行。
括号内的运算总是优先于括号外的运算。
但是,在括号之内,运算符的优先顺序不变。
赋值运算符的优先顺序最低。
表4-2运算符的优先顺序
算术
比较
逻辑
指数运算(^)
相等(=)
Not
负数(–)
不等(<
)
And
乘法和除法(*、/)
小于(<
Or
整数除法(\)
大于(>
Xor
求模运算(Mod)
小于或相等(<
=)
Eqv
加法和减法(+、–)
大于或相等(>
Imp
字符串连接(&
LikeIs
任务三枚举类型
枚举类型是一种特殊的数据类型,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。
此时,可将这些数据集合定义为枚举类型。
因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的集合为:
{Sun,Mon,Tue,Wed,Thu,Fri,Sat}
该集合可定义为描述星期的枚举类型,该枚举类型共有七个元素,因而用枚举类型定义的枚举变量只能取集合中的某一元素值。
由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。
定义枚举类型的格式:
[public|private]Enum数据类型名
成员名[=常数达式]
EndEnum
示例2:
定义和使用枚举类型:
PublicEnumDays
Sun
Mon
Tue
Wed
Thursday
Fri
Sat
使用方法:
Debug.print“Days.Saturday=”&
Days.Saturday
任务四数组
数组是包含相同数据类型的一组变量的集合,对数组中的单个变量引用通过数组索引下标进行。
在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。
定义规则如下:
Dim数组名([lowerto]upper[,[lowerto]upper,….])astype;
Lower缺省值为0。
二维数组是按行列排列,如XYZ(行,列)。
DimArr(-2to3)asinteger
DimArr(0to8,3to5)asinteger
除了以上固定数组外,VBA还有一种功能强大的动态数组,定义时无大小维数声明;
在程序中再利用Redim语句来重新改变数组大小,原来数组内容可以通过加preserve关键字来保留。
如下例:
Dimarray1()asdouble
Redimarray1(5)
Redimarray1(3)=250
Redimarray1(5,10)
任务五字符串
一、两种字符串
字符串是VBA中需要经常处理的一种数据类型,有2种字符串类型:
变长字符串和定长字符串。
变长字符串理论上可以保存大约2G(231)字节的字符串,实际中其保存的字符串长度由内存大小决定;
而定长字符串可以保存大约65000(216)长度的字符串。
这2种字符串都可以使用Dim语句来定义,定长字符串只需在其后加一个表示其长度的数字即可。
如:
DimMyStringasString‘变长字符串
DimMyFixedStringasString*25‘定长字符串
二、字符串的操作:
1.字符串变量的赋值:
字符串定义后为空字符串,即没有任何数据的字符串(“”),可以通过以下方式对字符串赋值。
字符串在VBA中用双引号表示。
MyString="
Helloworld."
MyFixedString="
Thisisafixedstring."
MyEmptyString="
定长字符串必须是其确定的长度,如果赋值时长度过长或过短,则自动以空格添满或截断。
2.字符串的连接
字符串的连接可以使用“&
”或者“+”,