




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8章章 模块与模块与VBA编程根底编程根底 模块的根本概念模块的根本概念 8.1创建模块创建模块8.2VBA程序设计根底程序设计根底8.3 VBA VBA流程控制语流程控制语句句8.4 过程调用和参数过程调用和参数传送传送8.5 VBA VBA程序的调试程序的调试8.7 VBA VBA程序运转错误程序运转错误处置处置8.68.1 模块的根本概念模块的根本概念模块是模块是Access中一个重要的数据库对象,模块中可中一个重要的数据库对象,模块中可包含一个或多个过程。包含一个或多个过程。过程是由一系列过程是由一系列VBA代码组成的。它包含许多代码组成的。它包含许多VBA语句和方法,以执行特定的
2、操作或计算数值。语句和方法,以执行特定的操作或计算数值。简而言之,模块是装着简而言之,模块是装着VBA代码的容器。代码的容器。特点:特点:模块比宏的功能更强大,运转速度更快,能直接运模块比宏的功能更强大,运转速度更快,能直接运转转Windows的其他程序。的其他程序。运用模块可以建立用户本人的函数,完成复杂的计运用模块可以建立用户本人的函数,完成复杂的计算、执行宏所不能完成的义务。算、执行宏所不能完成的义务。运用模块可以开发非常复杂的运用程序,使数据库运用模块可以开发非常复杂的运用程序,使数据库系统功能更加完善。系统功能更加完善。Access中,模块分为类模块和规范模块两种。中,模块分为类模块
3、和规范模块两种。8.1.1 规范模块规范模块规范模块普通用于存放供其他规范模块普通用于存放供其他Access数据库对象运用数据库对象运用的公共过程。的公共过程。规范模块通常安排一些公共变量或过程供类模块里的过规范模块通常安排一些公共变量或过程供类模块里的过程调用。在规范模块内部也可以定义私有变量和私有过程调用。在规范模块内部也可以定义私有变量和私有过程仅供本模块内部运用程仅供本模块内部运用特点:规范模块中的公共变量和公共过程具有全局特性,特点:规范模块中的公共变量和公共过程具有全局特性,其作用在整个运用程序里,生命周期是伴随着运用程序其作用在整个运用程序里,生命周期是伴随着运用程序的运转而开场
4、、封锁而终了。的运转而开场、封锁而终了。创建方法:选择模块对象,然后单击新建按钮或插入菜创建方法:选择模块对象,然后单击新建按钮或插入菜单项选择择模块。单项选择择模块。8.1.2 类模块类模块类模块是以类的方式封装的模块,是面向类模块是以类的方式封装的模块,是面向对象编程的单位。对象编程的单位。类模块按照方式不同分为两大类:类模块按照方式不同分为两大类:系统对象类模块系统对象类模块用户定义类模块用户定义类模块系统对象类模块系统对象类模块窗体和报表都可以含有本人的事件代码和窗体和报表都可以含有本人的事件代码和处置模块,这些模块属于系统对象类模块。处置模块,这些模块属于系统对象类模块。进入相应的模
5、块代码设计区域的方法:一进入相应的模块代码设计区域的方法:一单击单击“代码按钮;二是单击事件过程。代码按钮;二是单击事件过程。特点:类模块具有部分特性,其作用范围特点:类模块具有部分特性,其作用范围局限在所属窗体或报表内部,而生命周期局限在所属窗体或报表内部,而生命周期那么是伴随着窗体或报表的翻开而开场、那么是伴随着窗体或报表的翻开而开场、封锁而终了。封锁而终了。用户定义类模块创建方法:在模块对象下:单击插入|“类模块8.2 创建模块创建模块创建模块就是创建过程创建模块就是创建过程过程是模块的单元组成,由过程是模块的单元组成,由VBA代码编写而成。代码编写而成。过程是一段可以实现某个详细功能的
6、代码过程是一段可以实现某个详细功能的代码过程分为两类:过程分为两类:Sub子过程和子过程和Function函数过程。函数过程。一、在模块中参与过程:一、在模块中参与过程:创建方法:创建方法:翻开窗体或报表的事件过程进入翻开窗体或报表的事件过程进入选中单击模块对象,单击选中单击模块对象,单击“新建新建一个模块包含一个声明区域,且可以包含一个或多个子一个模块包含一个声明区域,且可以包含一个或多个子过程或函数过程。模块的声明区域是用来声明模块运过程或函数过程。模块的声明区域是用来声明模块运用的变量等工程。用的变量等工程。1、Sub过程子过程无前往值。过程子过程无前往值。定义格式:定义格式:Sub 过
7、程名过程名 程序代码程序代码 End Sub过程的调用:过程的调用:Call 过程名过程名Sub jc()Dim str1, str2, str3str1 = : Rem 给变量给变量str1赋值赋值str2 = shanghai 给变量给变量str2赋值赋值str3 = str1 + str2Debug.Print str3End SubDebug.Print在立刻在立刻 窗口中显示结果窗口中显示结果: Rem Dim定义变量定义变量立刻窗口的显示立刻窗口的显示:视图视图|立刻窗口立刻窗口Public Sub name Private Sub namePublic 表示表示 Sub 过程可被
8、一切过程可被一切 Script 中的一切其中的一切其他过程访问。他过程访问。 Private 表示表示 Sub 过程只可被声明该过程的过程只可被声明该过程的 Script 中的其他过程访问。中的其他过程访问。Name Sub 的称号,遵照规范变量命名商定。的称号,遵照规范变量命名商定。 Integer-数据类型数据类型Integer 字节或者整数字节或者整数 。假设知道变量总是存放整。假设知道变量总是存放整数,那么应该将其声明为数,那么应该将其声明为Interger类型或类型或Long 类型类型。整数的运算速度快,而且占用的内存少。整数的运算速度快,而且占用的内存少。 Dim (定义变量定义变
9、量) 方法为:方法为:Dim 变量变量 As 变量类型变量类型 2、Function过程又称函数有前往值过程又称函数有前往值定义格式:定义格式:Function 过程名过程名 AS前往值类型前往值类型 程序代码程序代码 END Function调用:直接用函数名调用调用:直接用函数名调用过程过程test的定义如下:的定义如下:Sub test() Dim n As Integer, k As Long n = InputBox(n=) Debug.Print jc(n) k = jc(n) + jc(n+2) 调用函数调用函数jc Debug.Print “n!+(n+2)!=; kEnd S
10、ub函数函数jc的定义如下:的定义如下:Function jc(n As Integer) As Long 函数的前往值为函数的前往值为Long型型 Dim i As Integer, s As Long s = 1 For i = 1 To n s = s * i Next i jc = s 给函数赋值给函数赋值End Function二、在模块中执行宏二、在模块中执行宏在模块的过程定义中,运用在模块的过程定义中,运用Docmd对象对象的的RunMacro方法可以执行设计好的宏方法可以执行设计好的宏调用格式:调用格式:Docmd. RunMacro 宏名宏名,宏的运转,宏的运转次数次数,数值
11、表达式,数值表达式留意:宏名用双引号引起来留意:宏名用双引号引起来8.3 VBA程序设计根底VBA是是Microsoft Office内置的编程言语,内置的编程言语,其语法与其语法与VB言语兼容。不是一个独立的言语兼容。不是一个独立的开发工具,普通被嵌入到像开发工具,普通被嵌入到像Word、Excel、Access这样的宿主软件中,与这样的宿主软件中,与其配套运用其配套运用VBA采用了面向对象的程序设计方法。采用了面向对象的程序设计方法。8.3.1、程序语句书写原那么、程序语句书写原那么1、语句书写规那么、语句书写规那么通常一个语句写在一行,语句较长一行写不下时,可以通常一个语句写在一行,语句
12、较长一行写不下时,可以用续行符用续行符_将语句延续写在下一行将语句延续写在下一行可以运用冒号将几个语句分隔写在一行中可以运用冒号将几个语句分隔写在一行中 例如模块例如模块2当输入一行语句并按下回车键后,代码以红色文本显示当输入一行语句并按下回车键后,代码以红色文本显示阐明该语句存在错误阐明该语句存在错误2、注释语句、注释语句两种方式:两种方式::Rem 注释语句注释语句注释语句注释语句注释默许以绿色文本显示。注释默许以绿色文本显示。还可以利用还可以利用“编辑工具栏中的编辑工具栏中的“设置注释块按钮和设置注释块按钮和“解除注释块按钮对大块代码进展注释或解除注释解除注释块按钮对大块代码进展注释或解
13、除注释例题:定义变量例题:定义变量,赋值并添加注释赋值并添加注释Sub ab()Dim str1, str2str1 = “shanghai“ : Rem 为变量为变量str1赋值赋值str2 = shi bo hui 为变量为变量str2赋值赋值Debug.Print str1 + str2End Sub3、采用缩进格式书写程序、采用缩进格式书写程序显示出流程中的构造显示出流程中的构造 也可以利用编辑也可以利用编辑缩进或凸出缩进或凸出1对象和集合对象和集合对象:在采用面向对象程序设计方法的程对象:在采用面向对象程序设计方法的程序中,程序处置的目的被笼统成了一个序中,程序处置的目的被笼统成了一
14、个个对象,每个对象具有各自的属性、方个对象,每个对象具有各自的属性、方法和事件。一个对象就是一个实体。对法和事件。一个对象就是一个实体。对象的方法就是对象的可以执行的行为,象的方法就是对象的可以执行的行为,一个对象都有多种方法。一个对象都有多种方法。对象集合:对象集合:Access数据库窗口左侧的数据库窗口左侧的7类类对象列表构成对象类。对象列表构成对象类。7类对象。类对象。 集合表示的是某类对象所包含的实例构集合表示的是某类对象所包含的实例构成成 Access中除了数据库的中除了数据库的7类个对象外,类个对象外,还提供一个重要的对象:还提供一个重要的对象:DoCmd。主。主要功能是经过调用包
15、含在内部的方法实要功能是经过调用包含在内部的方法实现现VBA编辑中对编辑中对Access的操作。的操作。属性和方法描画了对象的性质和行为属性和方法描画了对象的性质和行为格式:对象格式:对象.属性或对象属性或对象.行为行为属性:用来表示对象的形状,如窗体的属性:用来表示对象的形状,如窗体的Name称号称号属性、属性、Caption标题属性等。标题属性等。 如:如:Label1.caption方法:用来描画对象的行为,如窗体有方法:用来描画对象的行为,如窗体有Refresh方法,方法,例如,利用例如,利用Docmd对象的方法可以翻开报表对象的方法可以翻开报表“教师教师信息,其格式为信息,其格式为:
16、 Docmd.OpenReport “教师教师信息信息Debug对象有对象有Print方法等。方法等。 Debug对象:该对象可在调试阶段用对象:该对象可在调试阶段用Print方法在立方法在立刻窗口输出信息刻窗口输出信息 Debug.print2属性和方法属性和方法3事件和事件过程事件和事件过程 事件:是对象可以识别的动作,通常由系统预先定事件:是对象可以识别的动作,通常由系统预先定义义(附录附录E列出了列出了Access数据库对象的事件数据库对象的事件)事件过程:对象在识别了所发生的事件后执行的程事件过程:对象在识别了所发生的事件后执行的程序序例如,下面的事件过程描画了单击按钮之后所发生例如
17、,下面的事件过程描画了单击按钮之后所发生的一系列动作。的一系列动作。Private Sub Command1_Click() Command1.Caption = 首都经济贸易大学首都经济贸易大学End Sub8.3.3 数据类型和数据库对象数据类型和数据库对象Access数据库系统创建表对象时所涉及的字段数据类型除数据库系统创建表对象时所涉及的字段数据类型除了了OLE对象和备注数据类型外,在对象和备注数据类型外,在VBA中都有数据类型中都有数据类型相对应相对应一、规范数据类型一、规范数据类型定义数据类型时定义数据类型时,也可以用符号定义也可以用符号定义Dim a as single dim
18、a!1、布尔型数据:两个值、布尔型数据:两个值True和和False。True=-1 False=02、日期型数据:前后必需用、日期型数据:前后必需用#号,如号,如#2021/11/233、变体类型数据:除定长字符串类型及用户自定义类型外,、变体类型数据:除定长字符串类型及用户自定义类型外,包含其他任何类型数据。包含其他任何类型数据。VBA中规定,程序中假设没有显式声明或运用符号来定义变中规定,程序中假设没有显式声明或运用符号来定义变量的数据类型,那么默以为变体类型量的数据类型,那么默以为变体类型数据类型数据类型类型标识类型标识符号符号 取值范围取值范围整数整数Integer%-32,768
19、32,767长整数长整数Long&-2,147,483,648 2,147,483,647单精度数单精度数Single!双精度数双精度数Double#货币货币Currency字符串字符串String$065500字符字符布尔型布尔型BooleanTrue 或或False日期型日期型Date100年年1月月1日日9999年年12月月31日日变体类型变体类型Variant无无二、用户自定义的数据类型二、用户自定义的数据类型在运用过程中利用在运用过程中利用VBA规范数据类型本人定义需求的多种数规范数据类型本人定义需求的多种数据类型据类型格式:格式:Type 数据类型名数据类型名 As As
20、End Type例:定义一个学生信息数据类型例:定义一个学生信息数据类型Type NewStudenttxtNo As String*7 学号,学号,7位定长字符串位定长字符串txtName As string 姓名,变长字符串姓名,变长字符串txtSex As String*1 性别,性别,1位定长字符串位定长字符串txtAge As Integer 年龄年龄,整型整型End Type当需求建立一个变量用来保管包含不同数据类型字段的数据表当需求建立一个变量用来保管包含不同数据类型字段的数据表的一条或多条记录时,用户自定义数据类型就特别有用。的一条或多条记录时,用户自定义数据类型就特别有用。普
21、通用户自定义数据类型运用时,首先要在模块区域中定义用普通用户自定义数据类型运用时,首先要在模块区域中定义用户数据类型,然后显式以户数据类型,然后显式以Dim,Public或或Static关键字来关键字来定义此用户类型变量定义此用户类型变量 用户定义类型变量的取值:变量名用户定义类型变量的取值:变量名.分量名分量名例:例:Dim NewStud as NewStudent NewStud.txtno=“980306 NewStud.txtName=“冯伟冯伟 NewStud.txtSex=“女女 NewStud.txtAge=20也可以运用也可以运用With关键字简化一下程序中的反复部分。关键字
22、简化一下程序中的反复部分。Dim NewStud as NewStudentWith NewStud .txtno=“980306 .txtName=“冯伟冯伟 .txtSex=“女女 .txtAge=20End With三、数据库对象略三、数据库对象略8.3.4变量与常量变量与常量变量是指程序运转时值会发生变化的数据。程变量是指程序运转时值会发生变化的数据。程序运序运行时行时,变量代表的就是内存中的某块暂时存储变量代表的就是内存中的某块暂时存储空间空间 1、变量的命名规那么、变量的命名规那么1以字母或汉字开头,后可跟字母、数字以字母或汉字开头,后可跟字母、数字或下划线。或下划线。2变量名最长
23、为变量名最长为255个字符。个字符。3不区分变量名的大小写不区分变量名的大小写4不能包含空格不能包含空格2、常量是指在程序中可以直接援用的实践值,、常量是指在程序中可以直接援用的实践值,其值在程序运转中不变。其值在程序运转中不变。VBA中有三种常中有三种常量:直接常量、符号常量、系统常量。量:直接常量、符号常量、系统常量。一变量的声明一变量的声明变量声明就是定义变量称号及类型,使系统为变量变量声明就是定义变量称号及类型,使系统为变量分配存储空间。普通,变量在运用前应该先声明。分配存储空间。普通,变量在运用前应该先声明。VBA声明变量有两种方法:显式声明声明变量有两种方法:显式声明 隐含声明隐含
24、声明显式声明:显式声明:格式为格式为 Dim 变量名变量名 AS 数据类型数据类型(或者字符或者字符)例如例如 Dim ab As integer , sum As single或或 Dim ab%, sum!隐含声明隐含声明没有直接定义而经过一个值指定给变量名,或没有直接定义而经过一个值指定给变量名,或dim定义定义中省略了中省略了AS 数据类型,或在变量称号后没有附加类数据类型,或在变量称号后没有附加类型说型说明字符来指明隐含变量的数据类型时,默以为明字符来指明隐含变量的数据类型时,默以为Variant数据类型。数据类型。例如:例如:Dim m,n m,n为变体变量为变体变量 ab=123
25、 ab为变体变量,值是为变体变量,值是123 建议在程序中显式声明变量建议在程序中显式声明变量二、强迫声明二、强迫声明在默许情况下,在默许情况下,VBA允许在代码中运用未声明的变量,允许在代码中运用未声明的变量,假设在模块设计窗口的顶部假设在模块设计窗口的顶部“通用通用-声明区域中,参声明区域中,参与语句:与语句:Option Explicit强迫要求一切变量必需定义才干运用。这种方法强迫要求一切变量必需定义才干运用。这种方法只为当前模块设置了自动变量声明功能。只为当前模块设置了自动变量声明功能。 假设想为一切模块都启用此功能,假设想为一切模块都启用此功能,“工具菜单工具菜单“选选项对话框,在
26、项对话框,在“编辑器选项卡中选中编辑器选项卡中选中“要求变量要求变量声明选项即可。声明选项即可。三、变量的作用域三、变量的作用域VBA编程中,变量定义的位置和方式不同,那么它存在的时编程中,变量定义的位置和方式不同,那么它存在的时间和起作用的范围也有所不同。这就是变量的生命周期和作间和起作用的范围也有所不同。这就是变量的生命周期和作用域。用域。VBA中变量的作用域有中变量的作用域有3个层次:个层次:1、部分范围:变量定义在模块的过程内部、部分范围:变量定义在模块的过程内部在子过程或函数内部运用在子过程或函数内部运用Dim、 Static静态静态As关键字关键字阐明的变量就是部分范围的。阐明的变
27、量就是部分范围的。2、模块范围:变量定义在模块的一切过程之外的起始位置、模块范围:变量定义在模块的一切过程之外的起始位置在模块的通用阐明区,用在模块的通用阐明区,用Dim 、Static、private私私有有As关键自定义的变量作用域都是模块范围。关键自定义的变量作用域都是模块范围。3、全局范围:定义在规范模块的一切过程之外的起始位置,、全局范围:定义在规范模块的一切过程之外的起始位置,作用范围一切类模块和规范模块的一切子过程与函数过程。作用范围一切类模块和规范模块的一切子过程与函数过程。在规范模块的变量定义区域,用在规范模块的变量定义区域,用PublicAs关键字阐明关键字阐明四、数据库对
28、象变量四、数据库对象变量Access建立的数据库对象及其属性均可被看成是建立的数据库对象及其属性均可被看成是VBA程序代码中的变量及其指定的值来加以援用。程序代码中的变量及其指定的值来加以援用。援用格式:援用格式:Forms!窗体称号!控件称号窗体称号!控件称号.属性称号属性称号或或Reports!报表称号!控件称号报表称号!控件称号.属性称号属性称号假设对象称号中含有空格或标点符号,就要用方括号把称号括假设对象称号中含有空格或标点符号,就要用方括号把称号括起来。起来。例如:例如:forms!系统登录系统登录!用户名用户名=“cueb forms!系统登录系统登录!用用 户名户名=“cueb此
29、外还可以用此外还可以用Set关键字来建立控件对象的变量。当需求多次关键字来建立控件对象的变量。当需求多次援用对象时,这种方法很方便。援用对象时,这种方法很方便。例如:例如:Dim txtName as control 定义控件类型变量定义控件类型变量Set txtname= Forms!窗体称号窗体称号!控件称号控件称号.属性称号属性称号txtName=“冯伟冯伟五、数组五、数组问题:求问题:求10个成果的平均值,并对它们按个成果的平均值,并对它们按照从大到小排序,这照从大到小排序,这10个数怎样组织?个数怎样组织?假设在程序中要对假设在程序中要对一组数据进展处置,通一组数据进展处置,通常的处
30、理方法是将这组常的处理方法是将这组数放在数组中。数放在数组中。 放在放在10个变量中?个变量中?放在一个数组中?放在一个数组中?数组是一组一样数据类型的数据的集合数组是一组一样数据类型的数据的集合 1一维数组的定义一维数组的定义 运用数组必需先定义数组,格式为运用数组必需先定义数组,格式为Dim 数组名数组名(to)As 例如,例如,dim score1 to 10as Integer定义了一个有定义了一个有10个元素的整型数组,一切数组元素具有同一个个元素的整型数组,一切数组元素具有同一个标识即数组名,数组名后括号内的序号称为数组元素的下标标识即数组名,数组名后括号内的序号称为数组元素的下标
31、。1一切数组元素在内存延续存放一切数组元素在内存延续存放2根据下标区分数组元素根据下标区分数组元素Score(1)score(2)score(3)score(9)Score(10)关于数组的定义,还有下面的阐明。关于数组的定义,还有下面的阐明。1定义数组时数组名的命名规那么与变量名的命名规那么定义数组时数组名的命名规那么与变量名的命名规那么一样一样2普通在定义数组时应给出数组下标的上限和下限。但也普通在定义数组时应给出数组下标的上限和下限。但也可以省略下限,可以省略下限,缺省为缺省为0。例如,例如,Dim a10 As Single默许情况下,数组默许情况下,数组a由由11个元素组成。个元素组
32、成。假设希望下标从假设希望下标从1开场,可在模块的通用声明段运用开场,可在模块的通用声明段运用Option Base语句声明。其运用格式为语句声明。其运用格式为 Option Base 1 3和和不能运用变量,必需是常量,常量可不能运用变量,必需是常量,常量可以是字面常量或符号常量,普通是整型常量。以是字面常量或符号常量,普通是整型常量。4假设省略假设省略As子句,那么数组的类型为子句,那么数组的类型为Varient变体类型。变体类型。2二维数组的定义二维数组的定义 格式为格式为Dim 数组名数组名(to,to)As 例如,例如,Dim c1 To 3, 1 To 4As Singlec(1,
33、1)c(1,2)c(1,3)c(1,4)c(2,1)c(2,2)c(2,3)c(2,4)c(3,1)c(3,2)c(3,3)c(3,4)3、动态数组、动态数组当预先不知道数组定义需求多少元素时,当预先不知道数组定义需求多少元素时,可以把数组定义为动态数组可以把数组定义为动态数组定义和运用方法:先用定义和运用方法:先用dim显式定义数组显式定义数组但不指明数组元素数目,然后用但不指明数组元素数目,然后用Redim关键字来决议数组中包含的元素数。关键字来决议数组中包含的元素数。例:例:dim newarray() as long Redim newarray(9,9,9) 六、变量标识符命名法那么
34、六、变量标识符命名法那么对于控件对象定义变量时,可以用小写字母对于控件对象定义变量时,可以用小写字母作为变量名的前缀。例如:文本框用作为变量名的前缀。例如:文本框用txt,定义一个文本框变量名为定义一个文本框变量名为txtName表表8.4例出了最常用变量标识符的前缀。例出了最常用变量标识符的前缀。为了易于记忆变量名为了易于记忆变量名 p212七、符号常量固定不变的值七、符号常量固定不变的值假设程序中多处用到某个常量,将其定义成符号常量假设程序中多处用到某个常量,将其定义成符号常量可添加代码的可读性,也便于维护。可添加代码的可读性,也便于维护。 用关键字用关键字Const定义符号常量:定义符号
35、常量:格式:格式:Const 符号常量称号符号常量称号=常量值常量值 Const PI =3.1415926符号常量普通需求大写符号常量普通需求大写,以便与变量区分以便与变量区分在定义符号常量时,假设前面加上在定义符号常量时,假设前面加上Global或或Public关键字,这一符号常量会涵盖全局或模块级别范围。关键字,这一符号常量会涵盖全局或模块级别范围。例如:例如:Global Const PI=3.1415926八、系统常量八、系统常量True False Yes No On Off Null等等单击单击“视图菜单视图菜单项选择择项选择择“对象对象阅读器就可以阅读器就可以查看查看Acces
36、s、VBA等对象库等对象库中提供的常量。中提供的常量。8.3.5 常用规范函数常用规范函数VBA提供了大量的内置函数,这些函数极大地丰富了提供了大量的内置函数,这些函数极大地丰富了VBA的功能的功能 了解和运用函数了解和运用函数,应从下面三个方面应从下面三个方面:函数名函数名参数参数(指参数的个数、顺序和类型指参数的个数、顺序和类型 )函数值每个函数被调用时都会有一个前往值函数值每个函数被调用时都会有一个前往值常用函数的运用可以参照附录常用函数的运用可以参照附录A学习学习下面引见一些常用函数下面引见一些常用函数一、算术函数完成数学计算功能一、算术函数完成数学计算功能1、绝对值函数:、绝对值函数
37、:Abs()前往数值表达式的绝对值。如前往数值表达式的绝对值。如Abs(-3)=32、向下取整函数:、向下取整函数:Int()向下取整数的结果,参数为负值时前往小于等于向下取整数的结果,参数为负值时前往小于等于参数值的第一个负数。只取整数部分,不思索参数值的第一个负数。只取整数部分,不思索四舍五入四舍五入3、取整函数:、取整函数:Fix()参数为正数时与参数为正数时与Int结果一样,参数为负数时前结果一样,参数为负数时前往大于等参数值的第一个负数往大于等参数值的第一个负数例:例:Int(-3.25)=-4 Fix(-3.25)=-34、四舍五入函数:、四舍五入函数:Round(,)按照指定的小
38、数进展四舍五入。按照指定的小数进展四舍五入。 就是就是用来指定小数位数的。用来指定小数位数的。例:例:Round(3.255,1)=3.35、开平方函数:、开平方函数:Sqr()Sqr(9)=36、产生随机数函数:、产生随机数函数:Rnd()数值表达式:数值表达式:小于小于0,每次产生一样的随机数,每次产生一样的随机数大于大于0,每次产生新的随机数,每次产生新的随机数等于等于0,产生最近生成的随机数,产生最近生成的随机数省略参数,默以为大于省略参数,默以为大于0二、字符串函数二、字符串函数1、字符串检索函数:InStr(start,compare)检索子字符串str2在字符串str1中最早出现
39、的位置,前往一整型数。Start为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开场检索。Compare也为可选参数,指定字符串的比较方法。值可以是1、2和0缺省。0做二进制比较,1不区分大小写的文本比较,2基于数据库中包含信息的比较。例:str1=“98765 str2=“65S=Instr(str1,str2)=4S=Instr(3,aSsiAB,a,1)=52、字符串长度检测函数:、字符串长度检测函数:Len(或或)前往字符串所含字符数。前往字符串所含字符数。留意:定长字符串,其长度是定义时的长度,和字符串实留意:定长字符串,其长度是定义时的长度,和字符串实践值无关。践值无
40、关。例:例:dim str as string*10Dim I Str=“123i=12Len1=Len(“12345) =5Len2=Len(12) 错误错误Len3=Len(i) =2Len4=Len (“考试中心考试中心)=4Len5=Len(str) =103、字符串截取函数、字符串截取函数Left right midMid(,N2):从字符:从字符串左边第串左边第N1个字符起截取个字符起截取N2个字符。缺省个字符。缺省N2截取一切字符。截取一切字符。4、生成空格字符函数:、生成空格字符函数:Space()前往数值表达式的值指定的空格字符数前往数值表达式的值指定的空格字符数5、大小写转
41、换函数:、大小写转换函数:ucase:小写转换成大写小写转换成大写Lcase:大写转换成小写:大写转换成小写6、删除空格函数:、删除空格函数:LTrim():删除开场的空格:删除开场的空格RTrim():删除尾部的空格:删除尾部的空格Trim():删除开场和尾部的空格:删除开场和尾部的空格三、日期三、日期/时间函数时间函数1、获取系统日期和时间函数、获取系统日期和时间函数Date() time() Now()2、截取日期分量函数、截取日期分量函数Year() Month() Day() Weekday()3、截取时间分量函数、截取时间分量函数 Hour() Minute() Second()4
42、、日期、日期/时间添加或减少一个时间间隔时间添加或减少一个时间间隔DateAdd(,)对表达式表示的日期按照间隔类型加上或减去指定的时间对表达式表示的日期按照间隔类型加上或减去指定的时间间隔值。间隔值正数为加,负数为减间隔值。间隔值正数为加,负数为减间隔类型参照间隔类型参照8.65、计算两个日期的间隔值函数、计算两个日期的间隔值函数DateDiff(,W1,W2)前往日期前往日期1和日期和日期2之间按照间隔类型所指定的时间之间按照间隔类型所指定的时间间隔数目。间隔数目。W1可选参数,指定一个星期的第一天是星期几的常可选参数,指定一个星期的第一天是星期几的常数数W2可选参数,指定一年的第一个周的
43、常数参照表可选参数,指定一年的第一个周的常数参照表8.76、前往日期指定时间部分函数、前往日期指定时间部分函数DatePart(,W1,W2)前往日期中按照间隔类型所指定的时间部分值前往日期中按照间隔类型所指定的时间部分值7、前往包含指定年月日的日期函数、前往包含指定年月日的日期函数DateSerial(表达式表达式1,表达式,表达式2,表达式,表达式3)前往由表达式前往由表达式1值为年,表达式值为年,表达式2值为月,表达式值为月,表达式3值值为日而组成的日期值。为日而组成的日期值。每个参数的取值范围应该是可接受的。当任何一个参每个参数的取值范围应该是可接受的。当任何一个参数的取值超出可接受范
44、围时,它会适时进位到下一数的取值超出可接受范围时,它会适时进位到下一个较大的时间单位。个较大的时间单位。四、类型转换函数四、类型转换函数1、字符串转换字符代码函数:、字符串转换字符代码函数:Asc()前往字符串首字符的前往字符串首字符的ASCII值。值。2、字符代码转换成字符函数:、字符代码转换成字符函数:Chr()前往与字符代码相关的字符。前往与字符代码相关的字符。3、数字转换成字符串函数:、数字转换成字符串函数:Str()将数值表达式转换成字符串。表达式值为正,前往将数值表达式转换成字符串。表达式值为正,前往的字符串包含一前导空格表示有一正号的字符串包含一前导空格表示有一正号4、字符串转换
45、成数字函数:、字符串转换成数字函数:Val()将数字字符串转换成数值型数字。留意,数字串转将数字字符串转换成数值型数字。留意,数字串转换成自动将字符串中的空格、制表符和换行符去换成自动将字符串中的空格、制表符和换行符去掉,当遇到它不能辨以为数字的第一个字符时,掉,当遇到它不能辨以为数字的第一个字符时,停顿读入字符串停顿读入字符串5、字符串转换日期日期函数:、字符串转换日期日期函数:DateValue()将字符串转换成日期值将字符串转换成日期值例:例:D=DateValue(“February 29,2004),前往,前往#2004-2-29#6、Nz函数:函数:Nz表达式或字段属性值表达式或字
46、段属性值,规定值规定值当一个表达式或字段属性值为当一个表达式或字段属性值为Null时,函数可前往时,函数可前往0、零长度、零长度字符串或其他指定的值。字符串或其他指定的值。当缺省当缺省“规定值时,假设表达式或字段属性值为数值型且值规定值时,假设表达式或字段属性值为数值型且值为为Null,Nz函数前往函数前往0假设表达式或字段属性值为字符型且值为假设表达式或字段属性值为字符型且值为Null,Nz函数前往函数前往空字符串。空字符串。8.3.6 运算符和表达式运算符和表达式一、运算符算术运算符、关系运算符、逻辑运算符和衔接运算一、运算符算术运算符、关系运算符、逻辑运算符和衔接运算符符1、算术运算符、
47、算术运算符乘幂乘幂、乘法、乘法*、除法、除法/、整数除法、整数除法求模运算求模运算Mod、加法、减法。、加法、减法。整数除法整数除法:对两个数做除法运算并前往一个整数:对两个数做除法运算并前往一个整数假设操作数有小数部分,舍去小数后再运算,假设结果有小数也假设操作数有小数部分,舍去小数后再运算,假设结果有小数也要舍去要舍去求模运算求模运算Mod:求余数:求余数假设操作数是小数,四舍五入变成整数后再运算;余数的符号跟假设操作数是小数,四舍五入变成整数后再运算;余数的符号跟被除数一样。被除数一样。2、关系运算符、关系运算符= = 运算结果为运算结果为True或或False。进展算术运算时,。进展算
48、术运算时,True当成当成-1False当成当成03、逻辑运算符、逻辑运算符And与与 Or或或 Not非非运算结果为运算结果为True或或False4、衔接运算符、衔接运算符&和和+&:将两个表达式作字符串衔接:将两个表达式作字符串衔接例:例:2+3&=&(2+3) 运算结果为运算结果为2+3=5+:将两个表达式均为字符串时,才将两个表达式:将两个表达式均为字符串时,才将两个表达式衔接成一个新字符串。衔接成一个新字符串。例:例:2+3&=+(2+3)出错出错二、表达式和优先级参照表二、表达式和优先级参照表8.9p220一个语句就是可以完成某项操作的一条
49、命令。一个语句就是可以完成某项操作的一条命令。VBA程序就是有大量语句构成的。程序就是有大量语句构成的。按照语句所执行的功能,按照语句所执行的功能,VBA的程序语句有赋值语的程序语句有赋值语句、声明语句、控制语句、注释语句等。句、声明语句、控制语句、注释语句等。控制语句分三种构造是顺序构造、分支构造和循环构控制语句分三种构造是顺序构造、分支构造和循环构造造 顺序构造是最简单的一种构造,按照语句的陈列顺序顺序构造是最简单的一种构造,按照语句的陈列顺序依次执行程序中的每一条语句。依次执行程序中的每一条语句。分支构造又称选择构造,根据条件选择执行途径,需分支构造又称选择构造,根据条件选择执行途径,需
50、求运用条件语句求运用条件语句循环构造:程序执行时,该语句中的一部分操作即循循环构造:程序执行时,该语句中的一部分操作即循环体被反复执行多次,需求运用循环语句环体被反复执行多次,需求运用循环语句8.4 VBA流程控制语句流程控制语句8.4 VBA流程控制语句流程控制语句8.4.1 赋值语句赋值语句是最根本的语句。它的功能是给变量或对象的属性赋值。其格是最根本的语句。它的功能是给变量或对象的属性赋值。其格式为式为 例如,例如,Ra = 0.1 给变量赋值给变量赋值Text1.Value = 欢迎运用欢迎运用ACCESS 给控件的属性赋值给控件的属性赋值“=为赋值号,表示赋值的为赋值号,表示赋值的动
51、作,不要了解为数学上的动作,不要了解为数学上的等号。等号。程序的顺序构造程序的顺序构造例例8-1 创建如图创建如图8-5所示的窗体所示的窗体“计算圆的面计算圆的面积和周长。要求在文本框中输入了圆的半积和周长。要求在文本框中输入了圆的半径后,单击径后,单击“计算按钮,在窗体的另外两计算按钮,在窗体的另外两个文本框中分别输出圆的面积和周长。个文本框中分别输出圆的面积和周长。“计算按钮的计算按钮的Click事件过程如下。事件过程如下。Private Sub command0_Click()定义变量和符号常量定义变量和符号常量Dim r As Single r为圆的半径为圆的半径Dim s As Si
52、ngle s为圆的面积为圆的面积Dim l As Single l为圆的周长为圆的周长Const PI = 3.1415926给变量给变量r赋值赋值r = text0计算圆的面积和周长计算圆的面积和周长s = PI * r 2l = 2 * PI * r用文本框输出结果用文本框输出结果text2 = stext4 = lEnd Sub条件表达式条件表达式语句块语句块当条件为假时当条件为假时当条件为真时当条件为真时开场开场终了终了语句块语句块语句块语句块根本语句根本语句条件表达式条件表达式当条件为假时当条件为假时当条件为真时当条件为真时8.4.2条件语句条件语句1、If-Then语句单分支构造流
53、程图见语句单分支构造流程图见P222If Then End If或者或者If Then 例例8.4 自定义过程自定义过程Procedure1的功能是:假设的功能是:假设当前系统时间超越当前系统时间超越12点,那么在立刻点,那么在立刻 窗口显示窗口显示“下午好!下午好!Sub Pro1()If Hour(Time()=12 then Debug.print “下午好!下午好!End Sub2、If-Then-Else(双分支构造双分支构造)语句构造语句构造: 流程图见流程图见P222If Then Else End If例例8.5 修正正程修正正程Pro1,新增功能是,假设当前系统时间为,新增功
54、能是,假设当前系统时间为12点至点至18点,那么在立刻窗口显示点,那么在立刻窗口显示“下午好!,否那下午好!,否那么显示么显示“欢迎下次光临!欢迎下次光临!Sub Pro1()If Hour(Time() = 12 And Hour(Time() y Then Debug.Print xElse Debug.Print yEnd If例例8.6试用试用If-Else语句构造编程实现由语句构造编程实现由X的值计算表达式的值计算表达式Y的值的值 x0 Y= 0 x=0 |x| x0 Then y=Sqr(x)Else If x=0 Then y=0 Else y=Abs(x) End IfEnd
55、If程序段程序段2:If x0 Then y=Sqr(x)ElseIf x=0 Then y=0Else y=Abs(x)End If例例8-2 用用VBA程序实现窗体程序实现窗体“系统登录。系统登录。“确定按钮的Click事件过程 Private Sub cmd确定_Click() Dim name As String, pass As String Dim r As Integer 存放MsgBox音讯框的前往值 name = Me!txt用户名 pass = Me!txt口令 If pass = 1234 And name = cueb Then 假设用户名和口令正确,显示音讯框,运转学
56、生管理模块窗体 MsgBox 欢迎进入学生管理模块!, vbOKOnly + vbCritical, 欢迎 DoCmd.Close 封锁系统登录窗体 DoCmd.OpenForm 学生管理模块 翻开学生管理模块窗体 Else MsgBox 密码错误!, vbOKOnly显示音讯框 Me!txt用户名 = 使文本框清空 Me!txt口令 = Me!txt用户名.SetFocus 使文本框获得焦点,预备重新输入 End IfEnd Sub3、 If-Then-ElseIf多分支构造If Then ElseIf Then ElseIF Then Else End If流程图见流程图见P223例例8.
57、7 定义过程定义过程Pro3 功能:假设当前系统时间功能:假设当前系统时间为为8至至12点钟之间,在立刻窗口显示点钟之间,在立刻窗口显示“上午好!上午好!,系统时间为,系统时间为12点至点至18点,那么显示点,那么显示“下午下午好!,其他时间均显示好!,其他时间均显示“欢迎下次光临!欢迎下次光临!Sub Pro3() If Hour(time()=8 and Hour(time()=12 and Hour(time()= 90 and x= 80 and x= 70 and x= 60 and x70 Then Debug.Print 及格及格 Else Debug.Print 不及格不及格
58、End IfEnd Sub4、 Select Case-End Select语句 当条件比较多时,用当条件比较多时,用If-End If需求多重嵌套,运用程序变需求多重嵌套,运用程序变得复杂。用得复杂。用Select Case-End Select语句就可以方便语句就可以方便处理处理语句格式为语句格式为Select Case Case 语句块语句块1 表达式的值与表达式列表表达式的值与表达式列表1相等时执行相等时执行 Case 语句块语句块2 表达式的值与表达式列表表达式的值与表达式列表2相等时执行相等时执行 Case Else 语句块语句块n+1 上面的情况均不符合时执行上面的情况均不符合时
59、执行End Select阐明:阐明:1执行过程是先计算执行过程是先计算Select Case后的变量后的变量或表达式的值,然后从上至下逐个比较,决议或表达式的值,然后从上至下逐个比较,决议执行哪一个语句块。假设有多个执行哪一个语句块。假设有多个Case后的表后的表达式列表与其相匹配,那么只执行第一个达式列表与其相匹配,那么只执行第一个Case后的语句块。后的语句块。2Select Case后的变量或表达式只能是数后的变量或表达式只能是数值型或字符型表达式。值型或字符型表达式。3Case表达式可以是:表达式可以是: 单一数值:单一数值: 5 用逗号分隔的一组枚举表达式:用逗号分隔的一组枚举表达式
60、: 2, 4, 6, 8 表达式表达式1 To 表达式表达式2 60 to 100Is 关系运算符表达式关系运算符表达式 Is b,a,b)(2)Switch函数函数:Switch(条件式条件式1,表达式表达式1,条件式条件式2,表表达式达式2,条件式条件式n,表达式表达式n)例:例:y=Switch(x0,1,x=0,0,x0,-1)(3)Choose函数函数:Choose(索引式索引式,选项选项1,选项选项2,选项选项n)根据索引式的值来前往选项列表中的某个值。索引值为根据索引式的值来前往选项列表中的某个值。索引值为1,前,前往选项往选项1,索引值为,索引值为2,前往选项,前往选项2,以此类推。,以此类推。留意:只需索引值在界于留意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通运输安全管理体系与交通运输企业信用体系建设研究报告
- 2023年重庆省下半年资产评估师资产评估商誉及其特点考试试卷
- 2023年知识点二次根式有意义的条件填空题
- 2025年充电桩行业投资策略与充电设备市场前景研究报告
- 2025年银发消费市场养老服务市场细分领域消费者需求变化报告
- 2023年电工中级考试题库
- 2024年《小数点搬家》教案(北师大版四年级下册)(16篇)
- 2023年畜禽屠宰质量安全风险监测计划
- 甘肃省白银市2024-2025学年八年级下学期期末考试语文试卷(含答案)
- 2025版数据中心机房大清包建设合同样本
- 2024年重庆市中考道德与法治试卷真题A卷(含官方答案)
- 【对员工跳槽现象的探究8000字(论文)】
- 热衷硬质合金项目投资计划书
- 预防空调病的课件
- 检验科血液室实习出科小结
- SAP-QM质量管理模块前台操作详解(S4系统)
- 地质录井作业安全规程
- 神奇的数学:牛津教授给青少年的讲座
- 测试Bug记录表模板
- 三国志9全人物能力值表
- 医院疾病诊断证明和病假证明制度
评论
0/150
提交评论