【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:6 3、VBA程序设计基础 - 培训资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
返回VBA数据类型继承了传统的Basic语言,如Microsoft QuickBasic。
在VBA应用程序中,也需要对变量的数据类型进行说明。
VBA提供了较为完备的数据类型,Access数据表中的字段使用的数据类型(OLE对象和备注字段数据类型除外)在VBA中都有对应的类型。
VBA数据类型、类型声明符、数据类型和取值范围如表6-5。
其中,字符串类型又分为变长字符串(String)和定长字符串(Stringlength)。
除了上述系统提供的基本数据类型外,VBA还支持用户自定义数据类型。
自定义数据类型实质上是由基本数据类型构造而成的一种数据类型,我们可以根据需要来定义一个或多个自定义数据类型。
VAB??????????????????ù??????????????????§??????????§????????????Byte????????02550Integer????????-32768327670Boolean????/????True????FalseFALSELong??¤????????-21474836482147483670·????ù????-3.402823E38-1.401298E-5??ù??ù????1.401298E-453.402823E38·????ù????-1.7200069313486232E308????-4.9406564841247E-324??ù??ù???? 4.9406564841247E-324????1.7200069313486232E308Currency????????-922337203685????9223372036850String????????????·????????????????????¤??????÷??¨Data????????/????????January 1100???? December 3199990Object????????Variant????????EmptySingle??¤????????0Double????????????012常量是指在程序运行的过程中,其值不能被改变的量。
常量的使用可以增加
代码的可读性,并且使
代码更加容易维护。
此外,使用固有常量——MicrosoftAccess、MicrosoftforAccessApplications等支持的常量,可以保证既是常量所代表的基础值在MicrosoftAccess版本升级换代后也能使
代码正常运行。
1除了直接常量(即通常的数值或字符串值常量,如:123,Lee等,也称为字面常量)外,MicrosoftAccess还支持三种类型的常量:符号常量:用Const语句创建,并且在模块中使用的常量;固有常量:是MicrosoftAccess或引用库的一部分;系统定义常量:True、False和Null。
1通常,符号常量用来代表在
代码中反复使用的相同的值,或者代表一些具有特定意义的数字或字符串。
符号常量的使用可以增加
代码的可读性与可维护性。
符号常量使用Const语句来创建。
创建符号常量时需给出常量值,在程序中运行过程中对符号常量只能作读取操作,而不允许修改或为其重新赋值,也不允许创建与固有常量同名的符号常量。
ConstConstconPI3.14159265conPIπPrivateConstconPI2PI2conPI2PublicConstconVersionVersionAccessconVersion2ConstMicrosoftAccessVBAActiveXDataObjectsADOMicrosoftAccessVBAMicrosoftAccessac”ADOad”VisualBasicvb”acFormadAddNewvbCurrencyMicrosoftAccess6-156-15 3系统定义的常量有三个:True、False和Null。
系统定义常量可以在计算机上的所有应用程序中使用。
2变量实际上是一个符号地址,它代表了命名的存储位置,包含在程序执行阶段修改的数据。
每个变量都有变量名,在其作用域范围内可唯一识别。
使用前可以指定数据类型(即采用显式声明),也可以不指定(即采用隐式声明)。
1变量名必须以字母字符开头,在同一范围内必须是唯一的,不能超过255个字符,而且中间不能包含句点或类型声明字符。
虽然,在
代码中允许使用未经声明的变量,但一个良好的编程习惯应该是在程序开始几行声明将用于本程序的所有变量。
这样做的目的是为了避免数据输入的错误,提高应用程序的可维护性。
对变量进行声明可以使用类型说明符号、Dim语句和DefType语句。
BasicvarXyz123VBAIntegerLongSingleDoubleStringCurrencyintXdouYstrZintX1243douY45665.456strZAccess DimDimDimAsDimstrXAsStringstrXDimDim intXdouY strZ As Strring intXdouYstrZstrZintXdouYVariantasDimintXAsIntegerdouYAsDoublestrZAsStringDimDefTypeDefTypeFunctionPropertyGetDefTypeDefTypeDefIntabe-habeh6-6VBADefType??????????ù????????????????????DefBoolBoolean????????????DefBtyeByte????????DefIntInteger????????DefLngLong??¤????????DefCurCurrency????????DefSngSingle??¤????????DefDblDouble????????????DefDateData????????/????????DefStrString????????????DefObjObject????????DefVarVariant????????????声明变量数据类型可以使用上述三种方法,VBA在判断一个变量的数据类型时,按以下先后顺序进行:I.是否使用Dim语句;II.是否使用数据类型说明符;III.是否使用DefType语句。
没有上述三种方法声明数据类型的变量默认为变体类型(Variant)。
TypeTypeMyTypeMyNameAsStringl0MyBirthDateAsDateMySexAsIntegerEnd Type 0 1 MyType”MyTypeMyNameMyBirthDateMySexTypeTypePublicPrivateVBAMyNameAsStringl0TypeDimprivatePublicReDimStatic下面的例程说明了自定义数据类型的使用。
OptionCompareDatabase’自定义一个公共数据类型TypeMyTypeMyNameAsStringl0定义字符串变量存储一个名字。
MyBirthDateAsDate定义日期变量存储一个生日。
MySexAsInteger定义整型变量存储性别(0为女,1为男)EndTypeSubuseTypeDimUdtXyzasMyTypeUdtXyz.MyNameXyzUdtXyz.MyBirthDate75/12/17UdtXyz.MySex1Debug.PrintUdtXyz.MyNameUdtXyz.MyBirthDateUdtXyz.MySexEndSub 例程先在通用声明中自定义了MyType数据类型,然后在useType过程中使用它来声明Xyz为一个MyType数据类型变量。
2LocatePrivateModulePublicDimPrivateAsPublicAs9-2图6-16 变量作用域模块对象模块APublicintA1asintegerPrivateintA2asintegerSubA1本地变量私有变量intA2公共变量intA1intB1EndSubSubA2本地变量私有变量intA2公共变量intA1intB1EndSub模块BPublicintB1asintegerPrivateintB2asintegerSubB1本地变量私有变量intB2公共变量intB1intA1EndSubSubB2本地变量私有变量intB2公共变量intB1intA1EndSubAccessStaticAsAccess3VBA数组是由一组具有相同数据类型的变量(称为数组元素)构成的集合。
1在VBA中不允许隐式说明数组,用户可用Dim语句来声明数组,声明方式为:Dim数组名数组下标上界As数据类型如:DimintArrayl0AsInteger这条语句声明了一个有10个元素的数组,每个数组元素为一个整型变量。
这是只指定数组元素下标上界来定义数组。
在使用数组时,可以使用OptionBase来指定数组的默认下标下界是0或l。
默认情况下,数组下标下界为0。
所以,用户只需使用它来指定默认下标下界为l。
OptionBase能用在模块的通用声明部分。
VBA允许在指定数组下标范围时使用To,如下例所示:DimintArray-3to3AsInteger该语句定义一个有7个元素的数组,数组元素下标从-3到3。
如果要定义多维数组,声明方式为:Dim数组名数组第1维下标上界,数组第2维下标上界…As数据类型如:Dim intArray 23As Integer 语句定义了一个二维数组,第一维有3个元素,第二维有4个元素。
在VBA中,还允许用户定义动态数组。
动态数组的定义方法是,先使用Dim来声明数组,但不指定数组元素的个数。
而在以后使用时再用ReDim来指定数组元素个数,称为数组重定义。
在对数组重定义时,可以使用ReDim后加保留字Preserve来保留以前的值否则使用ReDim后,数组元素的值会被重新初始化为默认值,下面的例子说明了动态数组的定义方法:DimintArrayAsInteger’声明部分ReDimPreserveintAmal0’在过程中重定义,保留以前的值ReDimintArrayl0’在过程中重新初始化同样,用户可以使用Public、Private或Static来声明公共数组、私有数组或静态数组。
2intAma2intAma3intArray00intArray11365365curExpense365364365Dim curExpense364 As Currency 20SubFillArrayDimcurExpense364AsCurrencyDimintIAsIntegerForintI0to364curExpenseintI20NextEnd Sub 算术运算符是常用的运算符,用来执行简单的算术运算。
VBA提供了8个算术运算符,表6-7列出了这些算术运算符。
在8个算术运算符中,除取负(-)是单目运算符外,其它均为双目运算符。
加(),减(-),乘(),取负(-)等??????????????????????í??????????ù??????·??ù????????XY????·??????????--X??????¨????????XY·????????ù??¨????????/X/Y??????ù??ù??¨????????XY????????????????ModX Mod Y??????¨????????XY??????¨????????-X-Y1指数运算用来计算乘方和方根,其运算符为,28表示2的8次方,而2(1/2)或20.5是计算2的平方根。
2浮点数除法运算符(/)执行标准除法操作,其结果为浮点数。
例如,表达式5/2的结果为2.5,与数学中的除法一样。
整数除法运算符()执行整除运算,结果为整型值,因此,表达式52的值为2。
整除的操作数一般为整型值。
当操作数带有小数时,首先被四舍五入为整型数或长整型数,然后进行整除运算。
操作数必须在(-2147483648.5,214748367.5)范围内,其运算结果被截断为整型数(Integer)或长整数(Long),不再进行舍入处理。
3取模运算符(Mod)用来求余数,其结果为第一个操作数整除第二个操作数所得的余数。
表9-3按优先顺序列出了算术运算符。
在8个算术运算符中,指数运算符()优先级最高,其次是取负(-)运算符、乘()、浮点除()、整除(/)、加()、减(-)。
其中乘和浮点除是同级运算符,加和减是同级运算符。
当一个表达式中含有多种算术运算符时,必须严格按上述顺序求值。
此外,如果表达式中含有括号,则先计算括号内表达式的值;有多层括号时,先计算内层括号中的表达式。
字符串连接()用来连接多个字符串(字符串相加)。
例如:AMyBHomeCAB运算结果为:变量C的值为MyHome。
在VBA中,“”既可用作加法运算符,还可以用作字符串连接符,但“”专门用作字符串连接运算符,其作用与“”相同。
在有些情况下,用“”比用“”可能更安全。
1 关系运算符与关系表达式关系运算符也称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(True)或假(False)。
用关系运算符连接两个算术表达式所组成的表达式叫做关系表达式。
VBA提供了6个关系运算符,如表6-8所示。
??????????????????????×??????í??????????ù????????????XY????、