模块与VBA编程基础课件

上传人:痛*** 文档编号:241545095 上传时间:2024-07-03 格式:PPT 页数:93 大小:309.54KB
返回 下载 相关 举报
模块与VBA编程基础课件_第1页
第1页 / 共93页
模块与VBA编程基础课件_第2页
第2页 / 共93页
模块与VBA编程基础课件_第3页
第3页 / 共93页
点击查看更多>>
资源描述
模块与VBA编程基础8.1 模块的基本概念模块的基本概念模块是模块是Access中一个重要的数据库对象,模块中可中一个重要的数据库对象,模块中可包含一个或多个过程。包含一个或多个过程。过程是由一系列过程是由一系列VBA代码组成的。它包含许多代码组成的。它包含许多VBA语句和方法,以执行特定的操作或计算数值。语句和方法,以执行特定的操作或计算数值。简而言之,简而言之,模块是装着模块是装着VBA代码的容器。代码的容器。特点:特点:l模块比宏的功能更强大,运行速度更快,能直接运行模块比宏的功能更强大,运行速度更快,能直接运行Windows的其他程序。的其他程序。l使用模块可以建立用户自己的函数,完成复杂的计算、使用模块可以建立用户自己的函数,完成复杂的计算、执行宏所不能完成的任务。执行宏所不能完成的任务。l使用模块可以开发十分复杂的应用程序,使数据库系使用模块可以开发十分复杂的应用程序,使数据库系统功能更加完善。统功能更加完善。Access中,模块分为类模块和标准模块两种。中,模块分为类模块和标准模块两种。8.1.1 标准模块标准模块标准模块一般用于存放供其他标准模块一般用于存放供其他Access数据库对象使用数据库对象使用的的公共过程。公共过程。标准模块通常安排一些公共变量或过程供类模块里的过标准模块通常安排一些公共变量或过程供类模块里的过程调用。在标准模块内部也可以定义私有变量和私有过程调用。在标准模块内部也可以定义私有变量和私有过程仅供本模块内部使用程仅供本模块内部使用特点特点:标准模块中的公共变量和公共过程具有:标准模块中的公共变量和公共过程具有全局特性全局特性,其作用在整个应用程序里,生命周期是伴随着应用程序其作用在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。的运行而开始、关闭而结束。创建方法:选择模块对象,然后单击新建按钮或插入菜创建方法:选择模块对象,然后单击新建按钮或插入菜单选择模块。单选择模块。8.1.2 类模块类模块类模块是以类的形式封装的模块,是面向对类模块是以类的形式封装的模块,是面向对象编程的单位。象编程的单位。类模块按照形式不同分为两大类:类模块按照形式不同分为两大类:l系统对象类模块系统对象类模块l用户定义类模块用户定义类模块系统对象类模块系统对象类模块窗体和报表都可以含有自己的事件代码和窗体和报表都可以含有自己的事件代码和处理模块,这些模块属于系统对象类模块。处理模块,这些模块属于系统对象类模块。进入相应的模块代码设计区域的方法:一进入相应的模块代码设计区域的方法:一单击单击“代码代码”按钮;二是单击事件过程。按钮;二是单击事件过程。特点:类模块具有局部特性,其作用范围特点:类模块具有局部特性,其作用范围局限在所属窗体或报表内部,而生命周期局限在所属窗体或报表内部,而生命周期则是伴随着窗体或报表的打开而开始、关则是伴随着窗体或报表的打开而开始、关闭而结束。闭而结束。用户定义类模块创建方法:在模块对象下:单击”插入”|“类模块”8.2 创建模块创建模块创建模块就是创建过程创建模块就是创建过程过程是模块的单元组成,由过程是模块的单元组成,由VBA代码编写而成。代码编写而成。过程是一段可以实现某个具体功能的代码过程是一段可以实现某个具体功能的代码过程分为两类:过程分为两类:Sub子过程和子过程和Function函数过程函数过程。一、在模块中加入过程:一、在模块中加入过程:创建方法:创建方法:打开窗体或报表的事件过程进入打开窗体或报表的事件过程进入选中单击模块对象,单击选中单击模块对象,单击“新建新建”一个模块包含一个声明区域,且可以包含一个或多个子一个模块包含一个声明区域,且可以包含一个或多个子过程或函数过程。过程或函数过程。模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使用的变量等项目用的变量等项目用的变量等项目用的变量等项目。1、Sub过程(子过程)无返回值。过程(子过程)无返回值。定义格式:定义格式:Sub 过程名过程名 程序代码程序代码 End Sub过程的调用:过程的调用:Call 过程名过程名Sub jc()Dim str1,str2,str3str1=beijing :Rem 给变量给变量str1赋值赋值str2=shanghai 给变量给变量str2赋值赋值str3=str1+str2Debug.Print str3End Sub在立即在立即 窗口中显窗口中显示结果示结果:Rem Dim定义变量定义变量立即窗口的显示立即窗口的显示:视图视图|立即窗口立即窗口Public Sub name Private Sub namePublic 表示表示 Sub 过程可被所有过程可被所有 Script 中的所有其中的所有其他过程访问。他过程访问。Private 表示表示 Sub 过程只可被声明该过程的过程只可被声明该过程的 Script 中的其他过程访问。中的其他过程访问。Name Sub 的名称,遵循标准变量命名约定。的名称,遵循标准变量命名约定。Integer-数据类型数据类型Integer 字节或者整数字节或者整数。如果知道变量总是存放整数,。如果知道变量总是存放整数,则应该将其申明为则应该将其申明为Interger类型或类型或Long 类型。整数类型。整数的运算速度快,而且占用的内存少。的运算速度快,而且占用的内存少。Dim(定义变量定义变量)方法为:方法为: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 Sub函数函数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 宏名宏名,宏的运行,宏的运行次数次数,数值表达式,数值表达式注意:宏名用双引号引起来注意:宏名用双引号引起来8.3 VBA程序设计基础程序设计基础VBA是是Microsoft Office内内置置的的编编程程语语言言,其其语语法法与与VB语语言言兼兼容容。不不是是一一个个独独立立的的开开发发工工具具,一一般般被被嵌嵌入入到到像像Word、Excel、Access这这样样的宿主软件中,与其配套使用的宿主软件中,与其配套使用VBA采用了面向对象的程序设计方法。采用了面向对象的程序设计方法。、程序语句书写原则、程序语句书写原则1、语句书写规则、语句书写规则通常一个语句写在一行,语句较长一行写不下时,可以通常一个语句写在一行,语句较长一行写不下时,可以用用续行符(续行符(_)将语句连续写在下一行将语句连续写在下一行可以使用可以使用冒号冒号将几个语句分隔写在一行中将几个语句分隔写在一行中 例如模块例如模块2当输入一行语句并按下回车键后,代码以当输入一行语句并按下回车键后,代码以红色文本显示红色文本显示表明该语句存在错误表明该语句存在错误2、注释语句、注释语句两种方式:两种方式::Rem 注释语句注释语句注释语句注释语句注释默认注释默认以绿色文本显示以绿色文本显示。还可以利用还可以利用“编辑编辑”工具栏中的工具栏中的“设置注释块设置注释块”按钮和按钮和“解除注释块解除注释块”按钮对大块代码进行注释或解除注释按钮对大块代码进行注释或解除注释例题:定义变量例题:定义变量,赋值并添加注释赋值并添加注释Sub ab()Dim str1,str2str1=“shanghai“:Rem 为变量为变量str1赋值赋值str2=shi bo hui 为变量为变量str2赋值赋值Debug.Print str1+str2End Sub3、采用缩进格式书写程序、采用缩进格式书写程序显示出流程中的结构显示出流程中的结构 也可以利用编辑也可以利用编辑缩进或凸出缩进或凸出8.3.2 面向对象程序设计的概念面向对象程序设计的概念1对象和集合对象和集合对象:对象:在采用面向对象程序设计方法的程序中,程序处理在采用面向对象程序设计方法的程序中,程序处理的目标被抽象成了一个个对象,的目标被抽象成了一个个对象,每个对象具有各自的属每个对象具有各自的属性、方法和事件性、方法和事件。一个对象就是一个实体一个对象就是一个实体。对象的方法。对象的方法就是对象的可以执行的行为,一个对象都有多种方法。就是对象的可以执行的行为,一个对象都有多种方法。对象集合:对象集合:Access数据库窗口左侧的数据库窗口左侧的7类对象列表形成对类对象列表形成对象类。象类。7类对象。类对象。集合表示的是某类对象所包含的实例构成集合表示的是某类对象所包含的实例构成 Access中除了数据库的中除了数据库的7类个对象外,还提供一个重要类个对象外,还提供一个重要的对象:的对象:DoCmd。主要功能是通过调用包含在内部的。主要功能是通过调用包含在内部的方法实现方法实现VBA编辑中对编辑中对Access的操作。的操作。属性和方法描述了对象的性质和行为属性和方法描述了对象的性质和行为格式:对象格式:对象.属性或对象属性或对象.行为行为属性:属性:用来表示对象的状态,如窗体的用来表示对象的状态,如窗体的Name(名称)(名称)属性、属性、Caption(标题)属性等。(标题)属性等。如:如:方法:方法:用来描述对象的行为,如窗体有用来描述对象的行为,如窗体有Refresh方法,方法,例如,利用例如,利用Docmd对象的方法可以打开报表对象的方法可以打开报表“教师教师信息信息”,其格式为,其格式为:Docmd.OpenReport“教师教师信息信息”Debug对象有对象有Print方法等。方法等。Debug对象:象:该对象可在象可在调试阶段用段用Print方法在立方法在立即窗口即窗口输出信息出信息 2属性和方法属性和方法3事件和事件过程事件和事件过程 事件:事件:是对象可以识别的动作,通常由系统预先定是对象可以识别的动作,通常由系统预先定义义(附录附录E列出了列出了Access数据库对象的事件数据库对象的事件)事件过程:事件过程:对象在识别了所发生的事件后执行的程对象在识别了所发生的事件后执行的程序序例如,下面的事件过程描述了单击按钮之后所发生的例如,下面的事件过程描述了单击按钮之后所发生的一系列动作。一系列动作。Private Sub Command1_Click()Command1.Caption=首都经济贸易大学首都经济贸易大学End Sub8.3.3 数据类型和数据库对象数据类型和数据库对象Access数据库系统创建表对象时所涉及的字段数据类型(除数据库系统创建表对象时所涉及的字段数据类型(除了了OLE对象和备注数据类型外),在对象和备注数据类型外),在VBA中都有数据类型中都有数据类型相对应相对应一、标准数据类型一、标准数据类型定义数据类型时定义数据类型时,也可以用符号定义也可以用符号定义Dim a as single dim a!1、布尔型数据:、布尔型数据:两个值两个值True和和False。True=-1 False=02、日期型数据:、日期型数据:前后必须用前后必须用#号,如号,如#2012/11/233、变体类型数据:、变体类型数据:除定长字符串类型及用户自定义类型外,除定长字符串类型及用户自定义类型外,包含其他任何类型数据包含其他任何类型数据。VBA中规定,程序中如果没有显式声明或使用符号来定义变中规定,程序中如果没有显式声明或使用符号来定义变量的数据类型,则默认为变体类型量的数据类型,则默认为变体类型数据类型数据类型类型标识类型标识符号符号 取值范围取值范围整数整数Integer%-32,768 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 End Type例:定义一个学生信息数据类型例:定义一个学生信息数据类型Type NewStudenttxtNo As String*7 学号,学号,7位定长字符串位定长字符串txtName As string 姓名,变长字符串姓名,变长字符串txtSex As String*1 性别,性别,1位定长字符串位定长字符串txtAge As Integer 年龄年龄,整型整型End Type当需要建立一个变量用来保存包含不同数据类型字段的数据表当需要建立一个变量用来保存包含不同数据类型字段的数据表的一条或多条记录时,用户自定义数据类型就特别有用。的一条或多条记录时,用户自定义数据类型就特别有用。一般用户自定义数据类型使用时,首先要在模块区域中定义用一般用户自定义数据类型使用时,首先要在模块区域中定义用户数据类型,然后显式以户数据类型,然后显式以Dim,Public或或Static关键字来关键字来定义此用户类型变量定义此用户类型变量 用户定义类型变量的取值:变量名用户定义类型变量的取值:变量名.分量名分量名例:例:Dim NewStud as NewStudent NewStud.txtno=“980306”NewStud.txtName=“冯伟冯伟”NewStud.txtSex=“女女”NewStud.txtAge=20也可以使用也可以使用With关键字简化一下程序中的重复部分。关键字简化一下程序中的重复部分。Dim NewStud as NewStudentWith NewStud .txtno=“980306”.txtName=“冯伟冯伟”.txtSex=“女女”.txtAge=20End With三、数据库对象(三、数据库对象(略)略)变量与常量变量与常量变量是指程序运行时值会发生变化的数据变量是指程序运行时值会发生变化的数据。程序运。程序运行时行时,变量代表的就是内存中的某块临时存储空间变量代表的就是内存中的某块临时存储空间 1、变量的命名规则、变量的命名规则(1)以字母或汉字开头,后可跟字母、数字或下划线。)以字母或汉字开头,后可跟字母、数字或下划线。(2)变量名最长为)变量名最长为255个字符。个字符。(3)不区分变量名的大小写)不区分变量名的大小写(4)不能包含空格)不能包含空格2、常量是指在程序中可以直接引用的实际值,其值在程序运、常量是指在程序中可以直接引用的实际值,其值在程序运行中不变。行中不变。VBA中有三种常量:直接常量、符号常量、系中有三种常量:直接常量、符号常量、系统常量。统常量。一变量的声明一变量的声明变量声明就是定义变量名称及类型,使系统为变量变量声明就是定义变量名称及类型,使系统为变量分配存储空间。一般,变量在使用前应该先声明分配存储空间。一般,变量在使用前应该先声明。VBA声明变量有两种方法:声明变量有两种方法:显式声明显式声明 隐含声明隐含声明u显式声明:显式声明:格式为格式为 Dim 变量名变量名 AS 数据类型数据类型(或者字符或者字符)例如例如 Dim ab As integer,sum As single或或 Dim ab%,sum!u隐含声明隐含声明没有直接定义而通过一个值指定给变量名,或没有直接定义而通过一个值指定给变量名,或dim定义定义中省略了中省略了AS 数据类型,或在变量名称后没有附加类型说数据类型,或在变量名称后没有附加类型说明字符来指明隐含变量的数据类型时,默认为明字符来指明隐含变量的数据类型时,默认为Variant数据类型。数据类型。例如:例如:Dim m,n m,n为变体变量为变体变量 ab=123 ab为变体变量,值是为变体变量,值是123 建议在程序中显式声明变量建议在程序中显式声明变量二、强制声明二、强制声明在默认情况下,在默认情况下,VBA允许在代码中使用未声明的变量,允许在代码中使用未声明的变量,如果在模块设计窗口的顶部如果在模块设计窗口的顶部“通用通用-声明声明”区域中,加区域中,加入语句:入语句:Option Explicit强制要求所有变量必须定义才能使用。强制要求所有变量必须定义才能使用。这种方法这种方法只为当前模块设置了自动变量声明功能。只为当前模块设置了自动变量声明功能。如果想为所有模块都启用此功能,如果想为所有模块都启用此功能,“工具工具”菜单菜单“选选项项”对话框,在对话框,在“编辑器编辑器”选项卡中选中选项卡中选中“要求变量要求变量声明声明”选项即可。选项即可。三、变量的作用域三、变量的作用域VBA编程中,变量定义的位置和方式不同,则它存在的时间和编程中,变量定义的位置和方式不同,则它存在的时间和起作用的范围也有所不同。这就是起作用的范围也有所不同。这就是变量的生命周期变量的生命周期和和作用域。作用域。VBA中变量的作用域有中变量的作用域有3个层次:个层次:1、局部范围:变量定义在模块的过程内部、局部范围:变量定义在模块的过程内部在子过程或函数内部使用在子过程或函数内部使用Dim、Static(静态)(静态)As关键字关键字说明的变量就是局部范围的。说明的变量就是局部范围的。2、模块范围:变量定义在模块的所有过程之外的起始位置、模块范围:变量定义在模块的所有过程之外的起始位置在模块的通用说明区,用在模块的通用说明区,用Dim、Static、private(私有)(私有)As关键自定义的变量作用域都是模块范围。关键自定义的变量作用域都是模块范围。3、全局范围、全局范围:定义在标准模块的所有过程之外的起始位置定义在标准模块的所有过程之外的起始位置,作用范围所有类模块和标准模块的所有子过程与函数过程。作用范围所有类模块和标准模块的所有子过程与函数过程。在标准模块的变量定义区域,用在标准模块的变量定义区域,用PublicAs关键字说明关键字说明四、数据库对象变量四、数据库对象变量Access建立的数据库对象及其属性均可被看成是建立的数据库对象及其属性均可被看成是VBA程序代码中的变量及其指定的值来加以引用。程序代码中的变量及其指定的值来加以引用。引用格式:引用格式:Forms!窗体名称!控件名称窗体名称!控件名称.属性名称属性名称或或Reports!报表名称!控件名称报表名称!控件名称.属性名称属性名称如果对象名称中含有空格或标点符号,就要用方括号把名称括如果对象名称中含有空格或标点符号,就要用方括号把名称括起来。起来。例如:例如:forms!系统登录系统登录!用户名用户名=“cueb”forms!系统登录系统登录!用用 户名户名=“cueb”此外还可以用此外还可以用Set关键字来建立控件对象的变量关键字来建立控件对象的变量。当需要多次。当需要多次引用对象时,这种方法很方便。引用对象时,这种方法很方便。例如:例如:Dim txtName as control 定义控件类型变量定义控件类型变量Set txtname=Forms!窗体名称窗体名称!控件名称控件名称.属性名称属性名称txtName=“冯伟冯伟”五、数组五、数组问题:求问题:求10个成绩的平均值,并对它们按个成绩的平均值,并对它们按照从大到小排序,这照从大到小排序,这10个数怎么组织?个数怎么组织?如果在程序中要对如果在程序中要对一组数据进行处理,通一组数据进行处理,通常的解决方法是将这组常的解决方法是将这组数放在数组中。数放在数组中。放在放在10个变量中?个变量中?放在一个数组中?放在一个数组中?数组是一组相同数据类型的数据的集合数组是一组相同数据类型的数据的集合 1一维数组的定义一维数组的定义 使用数组使用数组必须必须先定义数组,格式为先定义数组,格式为Dim 数组名数组名(to)As 例如,例如,dim score(1 to 10)as Integer定义了一个有定义了一个有10个元素的整型数组,所有数组元素具有同一个个元素的整型数组,所有数组元素具有同一个标识即数组名,标识即数组名,数组名后括号内的序号称为数组元素的下标。数组名后括号内的序号称为数组元素的下标。(1)所有数组元素在内存连续存放)所有数组元素在内存连续存放(2)根据下标区分数组元素)根据下标区分数组元素Score(1)score(2)score(3)score(9)Score(10)关于数组的定义,还有下面的说明。关于数组的定义,还有下面的说明。(1)定义数组时数组名的命名规则与变量名的命名规则相同)定义数组时数组名的命名规则与变量名的命名规则相同(2)一般在定义数组时应给出数组下标的上限和下限。但也)一般在定义数组时应给出数组下标的上限和下限。但也可以省略下限,可以省略下限,缺省为缺省为0。例如,例如,Dim a(10)As Single默认情况下,数组默认情况下,数组a由由11个元素组成。个元素组成。若希望下标从若希望下标从1开始,可在模块的通用声明段使用开始,可在模块的通用声明段使用Option Base语句声明。其使用格式为语句声明。其使用格式为 Option Base 1 (3)和和不能使用变量,必须是常量,不能使用变量,必须是常量,常量可常量可以是字面常量或符号常量,一般是整型常量。以是字面常量或符号常量,一般是整型常量。(4)如果省略)如果省略As子句,则数组的类型为子句,则数组的类型为Varient变体类型。变体类型。2二维数组的定义二维数组的定义 格式为格式为Dim 数组名数组名(to,to)As 例如,例如,Dim c(1 To 3,1 To 4)As Singlec(1,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)六、变量标识符命名法则六、变量标识符命名法则对于控件对象定义变量时,可以用小写字母对于控件对象定义变量时,可以用小写字母作为变量名的前缀。例如:文本框用作为变量名的前缀。例如:文本框用txt,定义一个文本框变量名为,定义一个文本框变量名为txtName表例出了最常用变量标识符的前缀。表例出了最常用变量标识符的前缀。为了易于记忆变量名为了易于记忆变量名 p212七、符号常量(固定不变的值)七、符号常量(固定不变的值)如果程序中多处用到某个常量,将其定义成符号常量如果程序中多处用到某个常量,将其定义成符号常量可增加代码的可读性,也便于维护。可增加代码的可读性,也便于维护。用关键字用关键字Const定义符号常量:定义符号常量:格式:格式:Const 符号常量名称符号常量名称=常量值常量值 符号常量一般需要大写符号常量一般需要大写,以便与变量区分以便与变量区分在定义符号常量时,如果前面加上在定义符号常量时,如果前面加上Global或或Public关键字,这一符号常量会涵盖全局或模块级别范围。关键字,这一符号常量会涵盖全局或模块级别范围。例如:例如:八、系统常量八、系统常量True False Yes No On Off Null等等单击单击“视图视图”菜单菜单选择选择“对象浏览对象浏览器器”就可以查看就可以查看Access、VBA等对象库等对象库中提供的常量。中提供的常量。8.3.5 常用标准函数常用标准函数VBA提供了大量的内置函数,这些函数极大地丰富了提供了大量的内置函数,这些函数极大地丰富了VBA的功能的功能 了解和使用函数了解和使用函数,应从下面三个方面应从下面三个方面:函数名函数名参数参数(指参数的个数、顺序和类型指参数的个数、顺序和类型)函数值(每个函数被调用时都会有一个返回值)函数值(每个函数被调用时都会有一个返回值)常用函数的使用可以参照附录常用函数的使用可以参照附录A学习学习下面介绍一些常用函数下面介绍一些常用函数一、算术函数(完成数学计算功能)一、算术函数(完成数学计算功能)1、绝对值函数:、绝对值函数:Abs()返回数值表达式的绝对值。如返回数值表达式的绝对值。如Abs(-3)=32、向下取整函数:、向下取整函数:Int()向下取整数的结果,参数为负值时返回小于等于向下取整数的结果,参数为负值时返回小于等于参数值的第一个负数。只取整数部分,不考虑参数值的第一个负数。只取整数部分,不考虑四舍五入四舍五入3、取整函数:、取整函数:Fix()参数为正数时与参数为正数时与Int结果一样,参数为负数时返回结果一样,参数为负数时返回大于等参数值的第一个负数大于等参数值的第一个负数例:例:Int(-3.25)=-4 Fix(-3.25)=-34、四舍五入函数:、四舍五入函数:Round(,)按照指定的小数进行四舍五入。按照指定的小数进行四舍五入。就是用就是用来指定小数位数的。来指定小数位数的。例:例:5、开平方函数:、开平方函数:Sqr()Sqr(9)=36、产生随机数函数:、产生随机数函数:Rnd()数值表达式:数值表达式:小于小于0,每次产生相同的随机数,每次产生相同的随机数大于大于0,每次产生新的随机数,每次产生新的随机数等于等于0,产生最近生成的随机数,产生最近生成的随机数省略参数,默认为大于省略参数,默认为大于0二、字符串函数二、字符串函数1、字符串检索函数:字符串检索函数:InStr(start,compare)检索子字符串检索子字符串str2在字符串在字符串str1中最早出现的位置,返回一中最早出现的位置,返回一整型数。整型数。Start为可选参数,为数值式,设置检索的起始位为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开始检索。置。如省略,从第一个字符开始检索。Compare也为可选参数,指定字符串的比较方法。值可以也为可选参数,指定字符串的比较方法。值可以是是1、2和和0(缺省)。(缺省)。0做二进制比较,做二进制比较,1不区分大小写的不区分大小写的文本比较,文本比较,2基于数据库中包含信息的比较。基于数据库中包含信息的比较。例:例:str1=“98765”str2=“65”S=Instr(str1,str2)=4S=Instr(3,”aSsiAB”,”a”,1)=52、字符串长度检测函数:、字符串长度检测函数:Len(或或)返回字符串所含字符数。返回字符串所含字符数。注意:定长字符串,其长度是定义时的长度,和字符串实注意:定长字符串,其长度是定义时的长度,和字符串实际值无关。际值无关。例:例:dim str as string*10Dim I Str=“123”i=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、大小写转换函数:、大小写转换函数:ucase:小写转换成大写小写转换成大写Lcase:大写转换成小写:大写转换成小写6、删除空格函数:、删除空格函数:LTrim():删除开始的空格:删除开始的空格RTrim():删除尾部的空格:删除尾部的空格Trim():删除开始和尾部的空格:删除开始和尾部的空格三、日期三、日期/时间函数时间函数1、获取系统日期和时间函数、获取系统日期和时间函数Date()time()Now()2、截取日期分量函数、截取日期分量函数Year()Month()Day()Weekday()3、截取时间分量函数、截取时间分量函数 Hour()Minute()Second()4、日期、日期/时间增加或减少一个时间间隔时间增加或减少一个时间间隔DateAdd(,)对表达式表示的日期按照间隔类型加上或减去指定的时间对表达式表示的日期按照间隔类型加上或减去指定的时间间隔值。间隔值正数为加,负数为减间隔值。间隔值正数为加,负数为减间隔类型参照间隔类型参照5、计算两个日期的间隔值函数、计算两个日期的间隔值函数DateDiff(,W1,W2)返回日期返回日期1和日期和日期2之间按照间隔类型所指定的时间间隔数目。之间按照间隔类型所指定的时间间隔数目。W1可选参数,指定一个星期的第一天是星期几的常数可选参数,指定一个星期的第一天是星期几的常数W2可选参数,指定一年的第一个周的常数(参照表)可选参数,指定一年的第一个周的常数(参照表)6、返回日期指定时间部分函数、返回日期指定时间部分函数DatePart(,W1,W2)返回日期中按照间隔类型所指定的时间部分值返回日期中按照间隔类型所指定的时间部分值7、返回包含指定年月日的日期函数、返回包含指定年月日的日期函数DateSerial(表达式表达式1,表达式,表达式2,表达式,表达式3)返回由表达式返回由表达式1值为年,表达式值为年,表达式2值为月,表达式值为月,表达式3值为日而组值为日而组成的日期值。成的日期值。每个参数的取值范围应该是可接受的。当任何一个参数的取值超每个参数的取值范围应该是可接受的。当任何一个参数的取值超出可接受范围时,它会适时进位到下一个较大的时间单位。出可接受范围时,它会适时进位到下一个较大的时间单位。四、类型转换函数四、类型转换函数1、字符串转换字符代码函数:、字符串转换字符代码函数:Asc()返回字符串首字符的返回字符串首字符的ASCII值。值。2、字符代码转换成字符函数:、字符代码转换成字符函数:Chr()返回与字符代码相关的字符。返回与字符代码相关的字符。3、数字转换成字符串函数:、数字转换成字符串函数:Str()将数值表达式转换成字符串。表达式值为正,返回的字符串包将数值表达式转换成字符串。表达式值为正,返回的字符串包含一前导空格表示有一正号含一前导空格表示有一正号4、字符串转换成数字函数:、字符串转换成数字函数:Val()将数字字符串转换成数值型数字。注意,数字串转换成自动将将数字字符串转换成数值型数字。注意,数字串转换成自动将字符串中的空格、制表符和换行符去掉,当遇到它不能识别字符串中的空格、制表符和换行符去掉,当遇到它不能识别为数字的第一个字符时,停止读入字符串为数字的第一个字符时,停止读入字符串5、字符串转换日期日期函数:、字符串转换日期日期函数:DateValue()将字符串转换成日期值将字符串转换成日期值例:例:D=DateValue(“February 29,2004”),返回,返回#2004-2-29#6、Nz函数:函数:Nz(表达式或字段属性值(表达式或字段属性值,规定值规定值当一个表达式或字段属性值为当一个表达式或字段属性值为Null时,函数可返回时,函数可返回0、零长度、零长度字符串(字符串(”)或其他指定的值。)或其他指定的值。当缺省当缺省“规定值规定值”时,如果表达式或字段属性值为数值型且值时,如果表达式或字段属性值为数值型且值为为Null,Nz函数返回函数返回0如果表达式或字段属性值为字符型且值为如果表达式或字段属性值为字符型且值为Null,Nz函数返回函数返回空字符串。空字符串。8.3.6 运算符和表达式运算符和表达式一、运算符(算术运算符、关系运算符、逻辑运算符和连接运算一、运算符(算术运算符、关系运算符、逻辑运算符和连接运算符)符)1、算术运算符、算术运算符乘幂(乘幂()、乘法()、乘法(*)、除法()、除法(/)、整数除法()、整数除法()求模运算(求模运算(Mod)、加法、减法。)、加法、减法。整数除法(整数除法():对两个数做除法运算并返回一个整数):对两个数做除法运算并返回一个整数如果操作数有小数部分,舍去小数后再运算,如果结果有小数也如果操作数有小数部分,舍去小数后再运算,如果结果有小数也要舍去要舍去求模运算(求模运算(Mod):求余数):求余数如果操作数是小数,四舍五入变成整数后再运算;余数的符号跟如果操作数是小数,四舍五入变成整数后再运算;余数的符号跟被除数相同。被除数相同。2、关系运算符、关系运算符=运算结果为运算结果为True或或False。进行算术运算时,。进行算术运算时,True当成当成-1False当成当成03、逻辑运算符、逻辑运算符And(与)(与)Or(或)(或)Not(非)(非)运算结果为运算结果为True或或False4、连接运算符、连接运算符&和和+&:将两个表达式作字符串连接:将两个表达式作字符串连接例:例:”2+3”&”=”&(2+3)运算结果为运算结果为2+3=5+:将两个表达式均为字符串时,才将两个表达式:将两个表达式均为字符串时,才将两个表达式连接成一个新字符串。连接成一个新字符串。例:例:”2+3”&”=”+(2+3)出错出错二、表达式和优先级(参照表)二、表达式和优先级(参照表)p220一个语句就是能够完成某项操作的一条命令。一个语句就是能够完成某项操作的一条命令。VBA程序就是有大量语句构成的。程序就是有大量语句构成的。按照语句所执行的功能,按照语句所执行的功能,VBA的程序语句有的程序语句有赋值语赋值语句、声明语句、控制语句、注释语句句、声明语句、控制语句、注释语句等。等。控制语句分三种结构是控制语句分三种结构是顺序结构、分支结构和循环结构顺序结构、分支结构和循环结构 顺序结构顺序结构是最简单的一种结构,按照语句的排列顺序依是最简单的一种结构,按照语句的排列顺序依次执行程序中的每一条语句。次执行程序中的每一条语句。分支结构分支结构又称选择结构,根据条件选择执行路径,需要又称选择结构,根据条件选择执行路径,需要使用条件语句使用条件语句循环结构循环结构:程序执行时,该语句中的一部分操作即循环:程序执行时,该语句中的一部分操作即循环体被重复执行多次,需要使用循环语句体被重复执行多次,需要使用循环语句8.4 VBA流程控制语句流程控制语句8.4 VBA流程控制语句流程控制语句8.4.1 赋值语句赋值语句是最基本的语句。它的功能是给变量或对象的属性赋是最基本的语句。它的功能是给变量或对象的属性赋值。其格式为值。其格式为 例如,例如,Ra=0.1 给变量赋值给变量赋值Text1.Value=欢迎使用欢迎使用ACCESS 给控件的属性赋值给控件的属性赋值“=”为赋值号,表示赋值的为赋值号,表示赋值的动作,不要理解为数学上的动作,不要理解为数学上的等号。等号。程序的顺序结构程序的顺序结构例例8-1 创建如图创建如图8-5所示的窗体所示的窗体“计算圆的面计算圆的面积和周长积和周长”。要求在文本框中输入了圆的半。要求在文本框中输入了圆的半径后,单击径后,单击“计算计算”按钮,在窗体的另外两按钮,在窗体的另外两个文本框中分别输出圆的面积和周长。个文本框中分别输出圆的面积和周长。“计算计算”按钮的按钮的Click事件过程如下。事件过程如下。Private Sub command0_Click()定义变量和符号常量定义变量和符号常量Dim r As Single r为圆的半径为圆的半径Dim s As Single s为圆的面积为圆的面积Dim l As Single l为圆的周长为圆的周长给变量给变量r赋值赋值r=text0计算圆的面积和周长计算圆的面积和周长s=PI*r 2l=2*PI*r用文本框输出结果用文本框输出结果text2=stext4=lEnd Sub条件表达式条件表达式语句块语句块当条件为假时当条件为假时当当条条件件为为真真时时开始开始结束结束语句块语句块语句块语句块基本语句基本语句条件表达式条件表达式当条件为假时当条件为假时当条件为真时当条件为真时条件语句条件语句1、If-Then语句(单分支结构)流程图见语句(单分支结构)流程图见P222If If Then Then End IfEnd If或者或者If If Then Then 例例8.4 8.4 自定义过程自定义过程Procedure1Procedure1的功能是:如果当前系统时间超的功能是:如果当前系统时间超过过1212点,则在立即点,则在立即 窗口显示窗口显示“下午好!下午好!”Sub Pro1()Sub Pro1()If Hour(Time()=12 then Debug.print If Hour(Time()=12 then Debug.print“下午好!下午好!”End SubEnd Sub2、If-Then-Else(双分支结构双分支结构)语句结构语句结构:流程图见流程图见P222If Then Else End If例例8.5 修改过程修改过程Pro1,新增功能是,如果当前系统时间为,新增功能是,如果当前系统时间为12点至点至18点,点,则在立即窗口显示则在立即窗口显示“下午好!下午好!”,否则显示,否则显示“欢迎下次光临!欢迎下次光临!”Sub Pro1()If Hour(Time()=12 And Hour(Time()y Then Debug.Print xElse Debug.Print yEnd If例试用例试用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 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 如果用户名和口令正确,显示消息框,运行学生管理模块窗体 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.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 不及格不及格 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 上面的情况均不符合时执行上面的情况均不符合时执行End Select说明:说明:(1)执行过程是先计算)执行过程是先计算Select Case后的变量或表达式后的变量或表达式的值,然后从上至下逐个比较,决定执行哪一个语句块。的值,然后从上至下逐个比较,决定执行哪一个语句块。如果有多个如果有多个Case后的表达式列表与其相匹配,则只执行后的表达式列表与其相匹配,则只执行第一个第一个Case后的语句块。后的语句块。(2)Select Case后的变量或表达式只能是数值型或字后的变量或表达式只能是数值型或字符型表达式。符型表达式。(3)Case表达式可以是:表达式可以是:单一数值:单一数值:5 用逗号分隔的一组枚举表达式:用逗号分隔的一组枚举表达式: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到可选择项目数之间,才返回其后到可选择项目数之间,才返回其后的选项值,否则返回无效值的选项值,否则返回无效值Null知识回顾知识回顾程序流程控制结构:程序流程控制结构:l顺序结构顺序结构l分支结构分支结构l循环结构循环结构分支结构:分支结构:l单分支结构单分支结构l双分支结构双分支结构l多分支结构多分支结构单分支结构单分支结构If-Then语句语句If If Then Then End IfEnd If双分支结构双分支结构If-Then-Else语句结构:语句结构:If Then Else End If多分支结构多分支结构1、If-Then-ElseIfl语句结构:语句结构:If Then ElseIf Then Else End If2、Select Case-End Select语句格式为语句格式为Select Case Case 语句块语句块1 表达式的值与表达式列表表达式的值与表达式列表1相等时执行相等时执行 Case 语句块语句块2 表达式的值与表达式列表表达式的值与表达式列表2相等时执行相等时执行 Case Else 语句块语句块n+1 上面的情况均不符合时执行上面的情况均不符合时执行End Select标准模块的编译顺序标准模块的编译顺序Sub 过程名过程名()Dim 变量名变量名as 数据类型数据类型 可省略可省略为变量赋值为变量赋值 可省略可省略输入流程控制结构输入流程控制结构Debug.print 变量名变量名 可省可省略略End subAccess对象中的事件过程模块右击控件,选择属性|事件选择一种事件的事件过程清楚sub-end sub 中的语句输入新的语句习题:习题:创建一个窗体,此窗体包括创建一个窗体,此窗体包括3个文本框和一个文本框和一个命令按钮,要求此窗体实现下列功能:个命令按钮,要求此窗体实现下列功能:l其中两个文本框可以输入数据其中两个文本框可以输入数据l单击命令按钮时,在第三个文本框中显单击命令按钮时,在第三个文本框中显示前两个文本框中较大的值示前两个文本框中较大的值8.4.3 循环语句循环语句重复执行一行或几行程序代码。重复执行一行或几行程序代码。VBA支持以下循环支持以下循环语句结构:语句结构:For-Next、Do While-Loop和和While-Wend语句语句语句格式为语句格式为For to Step 条件语句序列条件语句序列 Exit For Next 说明:说明:(1)循环控制)循环控制变量变量的类型必须是的类型必须是数值型数值型。(2)步长可以是正数,也可以是负数。如果步长为)步长可以是正数,也可以是负数。如果步长为1,Step短语可以省略。如果步长值为短语可以省略。如果步长值为0,该循环,该循环执行无数次,造成执行无数次,造成“死循环死循环”(3)根据初值、终值和步长,可以计算出循环的次)根据初值、终值和步长,可以计算出循环的次数,数,循环次数循环次数=(终值(终值-初值初值+1)/步长步长 因此因此For语句一般用于循环次数已知的情况语句一般用于循环次数已知的情况。(4)使用)使用Exit For语句可以语句可以提前退出循环提前退出循环。例例8.12 分析下列程序段的循环结构分析下列程序段的循环结构For K=5 to 10 Step 2 K=2*KNext K例例8.13 编程用编程用For语句求语句求1-100之间奇数的和之间奇数的和Public Sub gc2()Dim s,i As Integer s=0 For i=1 To 100 Step 2 s=s+i Next i Debug.Print sEnd Sub例例8.14 在立即窗口中显示有星号(在立即窗口中显示有星号(*)组成的)组成的55的正方形的正方形Sub Pro5()Dim Str As String For n=1 To 5 Step 1 Str=Str+*Next n For n=1 To 5 Step 1 Debug.Print Str Next nEnd Sub另一种编译方法:另一种编译方法:Sub Pro5()const MAX=5 Dim Str As String str=“”For n=1 to MAX Str=Str+”*”Next n For n=1 to MAX Debug.Print Str Next nEnd Sub2.Do WhileLoop循环语句 Do While 循环体循环体 条件为真时执行循环体条件为真时执行循环体 条件语句序列条件语句序列 Exit Do 结束条件语句序列结束条件语句序列Loop例题例题8.15 用用Do WhileLoop语句语句求求1+2+3+100之和之和Dim s,i As Int
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!