Access基础教程第八章使用VBA编程.docx

上传人:b****3 文档编号:4420884 上传时间:2022-12-01 格式:DOCX 页数:42 大小:49.65KB
下载 相关 举报
Access基础教程第八章使用VBA编程.docx_第1页
第1页 / 共42页
Access基础教程第八章使用VBA编程.docx_第2页
第2页 / 共42页
Access基础教程第八章使用VBA编程.docx_第3页
第3页 / 共42页
Access基础教程第八章使用VBA编程.docx_第4页
第4页 / 共42页
Access基础教程第八章使用VBA编程.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

Access基础教程第八章使用VBA编程.docx

《Access基础教程第八章使用VBA编程.docx》由会员分享,可在线阅读,更多相关《Access基础教程第八章使用VBA编程.docx(42页珍藏版)》请在冰豆网上搜索。

Access基础教程第八章使用VBA编程.docx

Access基础教程第八章使用VBA编程

Access基础教程--第八章使用VBA编程

本章内容

◆VBA编程基础

◆创建和设计VBA程序

◆VBA程序调试与运行

一、VBA编程基础知识

在执行简单的操作时,宏可以完成,如窗体的打开与关闭、工具栏的显示和隐藏等。

对于稍复杂一些的任务,则可用VisualBasicforApplication进行编程完成。

1.VBA的数据类型

下面对VBA中的数据类型、数据类型之间的转换、数据类型的对比进行介绍。

⑴数据类型

下表列出VBA中的基本数据类型。

类型名声明符字节

————————————————

Byte(单字节型)1

Integer(整型)%2

Long(长整型)&4

Single(单精度型)!

4

Double(双精度型)#8

Currency(货币型)@8

String(字符型)$n*1

Boolean(布尔型)2

Date(日期型)8

Variant(变体型)x

Object(对象型)4

————————————————

其中,字节、整型、长整型、单精度、双精度、货币等数据类型都属于数值数据类型,可以进行各种数学运算。

字符型数据类型用来声明字符串。

布尔型数据类型用来表示一个逻辑值,为真时显示True,为假时显示Flase。

日期型数据类型用来表示日期,日期常量必须用#括起来,如#2001/3/26#。

变体型数据类型可以存放系统定义的任何数据类型,如数值、字符串、布尔及日期等,其数据类型由最近放入的值决定。

用户可以使用Type语句定义任何数据类型。

用户自定义数据类型可以包括数据类型数组,或当前定义的用户自定义类型的一种或多种元素。

语法:

[Private|Public]Type类型名

元素名As数据类型

[元素名As数据类型]

……

EndType

例如:

定义班级中学生的基本情况数据类型如下:

PublicTypeStudents

NameAsString(8)

AgeAsInteger

EndType

声明变量:

DimStudentAsStudents

引用数据:

Student.Name=”张三”

Student.Age=15

下面是详细参考内容

◆Boolean数据类型

Boolean变量存储为16位(2个字节)的数值形式,但只能是True或是False。

Boolean变量的值显示为True或False(在使用Print的时候),或者#TRUE#或#FALSE#(在使用Write#的时候)。

使用关键字True与False可将Boolean变量赋值为这两个状态中的一个。

当转换其他的数值类型为Boolean值时,0会转成False,而其他的值则变成True。

当转换Boolean值为其他的数据类型时,False成为0,而True成为-1。

◆Byte数据类型

Byte变量存储为单精度型、无符号整型、8位(1个字节)的数值形式,范围在0至255之间。

Byte数据类型在存储二进制数据时很有用。

◆Currency数据类型

Currency变量存储为64位(8个字节)整型的数值形式,然后除以10,000给出一个定点数,其小数点左边有15位数字,右边有4位数字。

这种表示法的范围可以从-922,337,203,685,477.5808到922,337,203,685,477.5807。

Currency的类型声明字符为at号(@)。

Currency数据类型在货币计算与定点计算中很有用,在这种场合精度特别重要。

◆Date数据类型

Date变量存储为IEEE64位(8个字节)浮点数值形式,其可以表示的日期范围从100年1月1日到9999年12月31日,而时间可以从0:

00:

00到23:

59:

59。

任何可辨认的文本日期都可以赋值给Date变量。

日期文字须以数字符号(#)扩起来,例如,#January1,1993#或#1Jan93#。

Date变量会根据计算机中的短日期格式来显示。

时间则根据计算机的时间格式(12或24小时制)来显示。

当其他的数值类型要转换为Date型时,小数点左边的值表示日期信息,而小数点右边的值则表示时间。

午夜为0而中午为0.5。

负整数表示1899年12月30日之前的日期。

◆Decimal数据类型

Decimal变量存储为96位(12个字节)带符号的整型形式,并除以一个10的幂数。

这个变比因子决定了小数点右面的数字位数,其范围从0到28。

变比因子为0(没有小数位)的情形下,最大的可能值为+/-79,228,162,514,264,337,593,543,950,335。

而在有28个小数位的情况下,最大值为+/-7.9228162514264337593543950335,而最小的非零值为+/-0.0000000000000000000000000001。

注意此时,Decimal数据类型只能在Variant中使用,也就是说,不能声明一变量为Decimal的类型。

不过可用Cdec函数,创建一个子类型为Decimal的Variant。

◆Double数据类型

Double(双精度浮点型)变量存储为IEEE64位(8个字节)浮点数值的形式,它的范围在负数的时候是从-1.79769313486231E308到-4.94065645841247E-324,而正数的时候是从4.94065645841247E-324到1.79769313486232E308。

Double的类型声明字符是数字符号(#)。

◆Integer数据类型

Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。

Integer的类型声明字符是百分比符号(%)。

也可以用Integer变量来表示枚举值。

枚举值可包含一个有限集合,该集合包含的元素都是唯一的整数,每一个整数都在它使用时的上下文当中有其特殊意义。

枚举值为在已知数量的选项中做出选择提供了一种方便的方法,例如,black=0,white=1等等。

较好的编程作法是使用Const语句将每个枚举值定义成常数。

◆Long数据类型

Long(长整型)变量存储为32位(4个字节)有符号的数值形式,其范围从-2,147,483,648到2,147,483,647。

Long的类型声明字符为和号(&)。

◆Object数据类型

Object变量存储为32位(4个字节)的地址形式,其为对象的引用。

利用Set语句,声明为Object的变量可以赋值为任何对象的引用。

注意虽然以Object类型声明的变量足以适应包含对各种对象的引用,但是绑定到变量引用的对象总是在晚期(运行时)绑定。

要强迫在早期(编译时间)绑定的话,须将对象的引用赋值给用特定类名称声明的变量。

◆Single数据类型

Single(单精度浮点型)变量存储为IEEE32位(4个字节)浮点数值的形式,它的范围在负数的时候是从-3.402823E38到-1.401298E-45,而在正数的时候是从1.401298E-45到3.402823E38。

Single的类型声明字符为感叹号(!

)。

◆String数据类型

字符串有两种:

变长与定长的字符串。

变长字符串最多可包含大约20亿(2^31)个字符。

定长字符串可包含1到大约64K(2^16)个字符。

注意Public定长字符串不能在类模块中使用。

String之字符码的范围是0到255。

字符集的前128个字符(0到127)对应于标准的U.S.键盘上的字符与符号。

这前128个字符与ASCII字符集中所定义的相同。

后128个字符(128到255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。

String的类型声明字符为美元号($)。

◆用户定义数据类型

可以是任何用Type语句定义的数据类型。

用户自定义类型可包含一个或多个某种数据类型的数据元素、数组或一个先前定义的用户自定义类型。

例如:

TypeMyType

MyNameAsString'定义字符串变量存储一个名字。

MyBirthDateAsDate'定义日期变量存储一个生日。

MySexAsInteger'定义整型变量存储性别

EndType'(0为女,1为男)

◆Variant数据类型

Variant数据类型是所有没被显式声明(用如Dim、Private、Public或Static等语句)为其他类型变量的数据类型。

Variant数据类型并没有类型声明字符。

Variant是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。

Variant也可以包含Empty、Error、Nothing及Null等特殊值。

可以用VarType函数或TypeName函数来决定如何处理Variant中的数据。

数值数据可以是任何整型或实型数,负数时范围从-1.797693134862315E308到-4.94066E-324,正数时则从4.94066E-324到1.797693134862315E308。

通常,数值Variant数据保持为其Variant中原来的数据类型。

例如,如果把一个Integer赋值给Variant,则接下来的运算会把此Variant当成Integer来处理。

然而,如果算术运数针对含Byte、Integer、Long或Single之一的Variant执行,并当结果超过原来数据类型的正常范围时,则在Variant中的结果会提升到较大的数据类型。

如Byte则提升到Integer,Integer则提升到Long,而Long和Single则提升为Double。

当Variant变量中有Currency、Decimal及Double值超过它们各自的范围时,会发生错误。

可以用Variant数据类型来替换任何数据类型,这样会更有适应性。

如果Variant变量的内容是数字,它可以用字符串来表示数字或是用它实际的值来表示,这将由上下文来决定,例如:

DimMyVarAsVariant

MyVar=98052

在前面的例子中,MyVar内有一实际值为98052的数值。

像期望的那样,算术运算子可以对Variant变量运算,其中包含数值或能被解释为数值的字符串数据。

如果用+运算子来将MyVar与其他含有数字的Variant或数值类型的变量相加,结果便是一算术和。

Empty值用来标记尚未初始化(给定初始值)的Variant变量。

内含Empty的Variant在数值的上下文中表示0,如果是用在字符串的上下文中则表示零长度的字符串("")。

不应将Empty与Null弄混。

Null是表示Variant变量确实含有一个无效数据。

在Variant中,Error是用来指示在过程中出现错误时的特殊值。

然而,不像对其他种类的错误那样,程序并不产生普通的应用程序级的错误处理。

这可以让程序员,或应用程序本身,根据此错误值采取另外的行动。

可以用CVErr函数将实数转换为错误值来产生Error值。

⑵数据类型之间的转换

在进行VBA编程过程中,用户可以将一种数据类型的数据转换成另一种特定类型的数据。

如:

A=Cstr(2000),则将数值转换为字符型数据。

下面列出这些转换函数:

函数名目标类型

——————————

CbyteByte

CintInteger

ClngLong

CsngSingle

CdblDouble

CcurCurrency

CdateDate

CvarVarriant

——————————

⑶数据类型的对比

在Access中,有4种不同的编辑环境需要用户指定数据类型——表设计视图、查询参数、VBA代码、SQL查询视图。

下表列出数据类型与VBA数据类型对比。

字段数据类型VBA数据类型

——————————————————————

Yes/NoBoolean

Number(Byte)Byte

AutoNumber(LongInteger)Long

CurrencyCurrency

Date/TimeDate

Number(Double)Double

OLEObjectString

AutoNumber/GVI(同步复制ID)不支持

Memrostring

Number(Single)Single

Number(Integer)Integer

TextString

HyperLinkString

不支持Variant

——————————————————————

2.常量

定义常量来代替那些固定不变量的数字或字符串,可以提高代码的可读性和可维护性。

VBA中有一部分常量是系统预先定义的,可以直接使用。

用户也可以使用自己定义的常量,但在使用之前必须声明,以便分配内存空间。

语法如下:

[Public/Private]Const常量名[As数据类型]=表达式

例如:

ConstPi=3.14159265358979323

PublicConstA1AsInteger=6

ConstBornDay=#03/23/80#

PrivateConstA2=”Abcdef258”

常量有3个范围级别:

过程级别(在过程中声明的)、私有模块级别(Private)、公共模块级别(Public)。

Access支持3种类型的常量:

◆符号常量:

需要声明的常数都是符号常量。

◆固有常量:

是Access或引用对象库的一部分。

◆系统定义常量:

True、False、Null。

其中,符号常量可以按上述方法声明;系统定义常量只有上述三个。

而固有常量则比较复杂一些,它是系统自动定义的,它由应用程序列与控件提供。

它采用两种方法来限定常数:

通过前缀(如VBA对象库的常数都以Vb开头,如VbTileHorizontal)或通过库应用([Libyan]|[mdulname]Constant)。

用户可以使用对象浏览器来查看所有对象库中的固有常量列表。

具体操作如下:

◆单击数据库窗口【对象】栏下的【模块】按钮,再单击工具栏中的【代码】按钮,进入模块代码窗口。

◆单击代码窗口工具栏中的【对象浏览器】窗口。

◆要查看可以使用的常量,在【对象浏览器】窗口中的【工程/库】下拉列表框中选择【所有库】选项。

此时,在窗口的【类】列表框中将显示所有引用对象库中的类。

◆在【搜索文字】下拉列表框中输入“Constant”,然后单击【对象浏览器】工具栏上的【搜索】按钮,则会在【搜索结果】列表框中显示所有固有常量类型。

所有的这些固有常量都可以在宏或VBA中使用,用户可以在任何时候,在任何允许使用符号常量或用户自定义常量的地方使用固有常量。

Access中主要有以下几种类型的固有常量:

操作常量、DAO常量、事件过程常量、关键字常量、RunCommand方法常量、安全常量、VBA常量和VarType函数常量。

下面是VBA定义的一些常数,使程序设计变得更为简单。

下列常数可在程序代码中的任何地方代替实际值:

◆Calendar常数

常数值描述

vbCalGreg0指出使用的是阳历。

vbCalHijri1指出使用的是伊斯兰历法。

◆CallType常数

常数值描述

vbMethod1指出已经调用了一个方法。

vbGet2指出一个PropertyGet过程。

vbLet4指出一个PropertyLet过程。

vbSet8指出一个PropertySet过程。

◆Color常数

常数值描述

vbBlack0x0黑色

vbRed0xFF红色

vbGreen0xFF00绿色

vbYellow0xFFFF黄色

vbBlue0xFF0000蓝色

vbMagenta0xFF00FF紫红色

vbCyan0xFFFF00青色

vbWhite0xFFFFFF白色

◆Compiler常数

VisualBasicforApplications定义了一些不能与#If...Then...#Else指令一起使用的常数。

这些常数除了其范围是全局的;也就是说,除了可在工程中到处应用,在功能上与#If...Then...#Else指令定义的常数相同。

在16位开发平台上,编译常数定义如下:

常数值描述

Win16True指出开发环境是16位。

Win32False指出开发环境不是32位。

在32位开发平台上,编译常数定义如下:

常数值描述

Vba6True指出开发环境是VisualBasicforApplications,version6.0。

Vba6False指出开发环境不是VisualBasicforApplications,version6.0。

Win16False指出开发环境不是16位。

Win32True指出开发环境是32位。

MacFalse指出开发环境不是Macintosh。

Win16False指出开发环境不是16位的。

Win32False指出开发环境不是32位的。

MacTrue指出开发环境是Macintosh。

注意这些常数是由VisualBasic提供的,所以不能在任何层次中用相同名称定义自己的常数。

◆Date常数

常数值描述

vbUseSystem0使用NLSAPI设置。

vbSunday1星期日(缺省)

vbMonday2星期一

vbTuesday3星期二

vbWednesday4星期三

vbThursday5星期四

vbFriday6星期五

vbSaturday7星期六

◆Dir、GetAttr和SetAttr常数

常数值描述

vbNormal0正常的(Dir和SetAttr的缺省值)

vbReadOnly1只读的

vbHidden2隐藏的

vbSystem4系统文件

vbVolume8卷标

vbDirectory16目录或文件夹

vbArchive32文件自上一次备份后已经改变

vbAlias64在Macintosh上,标识符是一个别名。

◆IMEStatus常数

常数值描述

vbIMEModeNoControl0没有安装IME(缺省)

vbIMEModeOn1打开IME

vbIMEModeOff2关闭IME

vbIMEModeDisable3无效的IME

vbIMEModeHiragana4完整宽度Hiragana模式

vbIMEModeKatakana5完整宽度Katakana模式

vbIMEModeKatakanaHalf6半宽度Katakana模式

vbIMEModeAlphaFull7完整宽度Alphanumeric模式

vbIMEModeAlpha8半宽度Alphanumeric模式

◆Instr、StrComp常数

常数值描述

VbUseCompareOption-1使用OptionCompare语句的设置进行比较。

VbBinaryCompare0进行二进制的比较。

VbTextCompare1进行文字的比较。

vbDatabaseCompare2用于MicrosoftAccess(仅限于Windows),进行以数据库所含信息为基础的比较。

◆Keycode常数

常数值描述

vbKeyLButton0x1鼠标左键

vbKeyRButton0x2鼠标右键

vbKeyCancel0x3CANCEL键

vbKeyMButton0x4鼠标中键

vbKeyBack0x8BACKSPACE键

vbKeyTab0x9TAB键

vbKeyClear0xCCLEAR键

vbKeyReturn0xDENTER键

vbKeyShift0x10SHIFT键

vbKeyControl0x11CTRL键

vbKeyMenu0x12MENU键

vbKeyPause0x13PAUSE键

vbKeyCapital0x14CAPSLOCK键

vbKeyEscape0x1BESC键

vbKeySpace0x20SPACEBAR键

vbKeyPageUp0x21PAGEUP键

vbKeyPageDown0x22PAGEDOWN键

vbKeyEnd0x23END键

vbKeyHome0x24HOME键

vbKeyLeft0x25LEFTARROW键

vbKeyUp0x26UPARROW键

vbKeyRight0x27RIGHTARROW键

vbKeyDown0x28DOWNARROW键

vbKeySelect0x29SELECT键

vbKeyPrint0x2APRINTSCREEN键

vbKeyExecute0x2BEXECUTE键

vbKeySnapshot0x2CSNAPSHOT键

vbKeyInsert0x2DINSERT键

vbKeyDelete0x2EDELETE键

vbKeyHelp0x2FHELP键

vbKeyNumlock0x90NUMLOCK键

A至Z键与A–Z字母的ASCII码相同:

常数值描述

vbKeyA65A键

vbKeyB66B键

vbKeyC67C键

vbKeyD68D键

vbKeyE69E键

vbKeyF70F键

vbKeyG71G键

vbKeyH72H键

vbKeyI73I键

vbKeyJ74J键

vbKeyK75K键

vbKeyL76L键

vbKeyM77M键

vbKeyN78N键

vbKeyO79O键

vbKeyP80P键

vbKeyQ81Q键

vbKeyR82R键

vbKeyS83S键

vbKeyT84T键

vbKeyU85U键

vbKeyV86V键

vbKeyW87W键

vbKeyX88X键

vbKeyY89Y键

vbKeyZ90Z键

0至9键与数字0–9的ASCII码相同:

常数值描述

vbKey0480键

vbKey1491键

vbKey2502

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1