




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《计算机基础与Access数据库程序设计》第7章 宏及VBA编程《计算机基础与Access数据库程序设计7》ppt课件(全)目录7.1 宏7.2 VBA程序结构
7.3 VBA程序中的运算量、函数、语句
7.4 VBA程序流程控制7.5 过程及过程参数7.6 窗体、控件事件编程7.7 数据库编程《计算机基础与Access数据库程序设计7》ppt课件(全)7.1 宏宏(Macro)是由一个或多个操作组成的集合,其中的每个操作都能实现特定的功能,例如打开某个窗体或打印某个报表等。宏操作一般也叫宏命令。Access为开发人员提供了一些预定义的宏命令,这些宏命令可以直接在宏中使用。7.1.1宏的类型宏可以被分成3种基本类型:简单宏、宏组、条件宏。简单宏由若干基本操作组成,这些操作依次执行。宏组是由若干个宏组成的集合,其中的每个宏都可以独立运行,相互之间没有必然的联系。宏组更象是一个对宏进行分类管理的管理器,通过它可以把一些功能类似的宏组织到一起。《计算机基础与Access数据库程序设计7》ppt课件(全)简单宏在执行时不进行任何条件判断,其中的所有操作总是依次被执行一遍,然后结束。如果宏的某些操作可以依据特定条件执行,当条件成立时执行这些操作,条件不成立时不执行这些操作,这样的宏就叫做条件宏。条件是一个计算结果为True/False的逻辑表达式,其中可以包含字段和窗体控件的值。条件宏会依据条件结果决定执行路径。7.1.2常用宏命令Access提供了丰富的宏命令,常用的宏命令如表7-1所示,需要熟记其中的宏命令。宏命令一般也称为宏操作,可以直接在宏中使用(调用)。《计算机基础与Access数据库程序设计7》ppt课件(全)7.1.3建立与运行宏可以在宏设计器(窗口)中设计宏,打开宏设计器的方法如下:(1)在数据库操作界面选择“宏”对象。(2)单击“新建”按钮或选择“插入”→“宏”命令,即可打开宏设计器窗口,如左下图所示,将光标置于“操作”列时,相应单元格变为下拉表,可以从中选择需要的操作命令,如果操作有参数,在“操作参数”区域即自动列出相应参数,如右下图所示。《计算机基础与Access数据库程序设计7》ppt课件(全)可以插入和删除操作行。插入行的方法如下:将光标置于待插入行位置,然后选择“插入”→“行”命令或单击“插入行”按钮。右击待插入行位置,在弹出的快捷菜单中选择“插入行”命令。执行上述任一操作均可在当前行之前插入一个空白行。删除行的方法如下:将光标置于待删除行位置,然后选择“编辑”→“删除行”命令或单击“删除行”按钮。右击待删除行位置,在弹出的快捷菜单中选择“删除行”命令。执行上述任一操作均可删除相应的行。《计算机基础与Access数据库程序设计7》ppt课件(全)1.建立简单宏简单宏没有参数,也没有条件,如beep、FindNext、StopMacro等操作均没有参数。例如,如下图所示的宏将先发出嘟嘟声,然后终止宏操作。在运行宏之前需要先保存宏,单击“保存”工具栏按钮,或选择“文件”→“保存”命令,或单击设计器窗口关闭按钮并在显示的保存确认对话框中选择“是”,均可打开“另存为”对话框。《计算机基础与Access数据库程序设计7》ppt课件(全)2.建立带参数的宏许多宏操作都具有参数,设计时需要指定相应的参数,以OpenForm操作为例,其参数如下图所示。“窗体名称”参数用于指定要打开的窗体,可以直接输入窗体名,也可以单击下拉按钮从下拉表中选择窗体名。《计算机基础与Access数据库程序设计7》ppt课件(全)“视图”用于指定打开方式,可以从下拉表中选择“窗体”、“设计”、“打印预览”、“数据表”、“数据透视表”或“数据透视图”。“筛选名称”用于指定记录筛选条件,该筛选条件可以是一个查询或保存为查询的筛选条件。“Where条件”用于设置SQLWhere条件(不包含Where本身),任何符合SQLWhere条件的表达式均可。“数据模式”用于指定数据编辑方式,可以从下拉表中选择“增加”、“编辑”或“只读”,选择“只读”模式时不能添加或修改数据。“窗口模式”用于设置窗体打开模式,可以从下拉表中选择“普通”、“隐藏”、“图标”或“对话框”。《计算机基础与Access数据库程序设计7》ppt课件(全)假定按左下图所示的参数建立一个名为“编辑学生表”的宏(Where条件为:Year([tStudent]![出生日期])<1993),其运行效果如右下图所示,只有1993年以前出生的学生才能编辑,其他学生记录不能被编辑。《计算机基础与Access数据库程序设计7》ppt课件(全)宏参数中可以包含窗体、报表中的控件值或控件属性值、表的字段等。假定一个名为Exa的窗体上有一个文本框控件Text1,引用该控件值的方法如下:Forms![Exa]![Text1]上述表示方法的含义是窗体集合(Forms)中的Exa窗体上的Text1控件的值。表的字段的引用方法形如:[表名]![字段名]报表上的控件值的引用方法与窗体类似,把Forms换成Reports即可。【例7-1】设计一个按指定出生年份编辑对应学生信息的窗体。《计算机基础与Access数据库程序设计7》ppt课件(全)设计步骤如下:(1)从学生表编辑窗体复制/粘贴生成一个新窗体“学生表筛选编辑”。(2)在学生表筛选编辑窗体上添加一个文本框控件“出生年度”,设置其格式属性为“常规数字”,小数位数属性设置为0。(3)在学生表筛选编辑窗体上添加一个命令按钮“筛选”,设置其标题为“筛选”。(4)设计一个名为“出生年度筛选”的宏,宏操作为ApplyFilter,Where条件为“Year([出生日期])=[Forms]![学生表筛选编辑]![出生年度]”。(5)打开学生表筛选编辑窗体,设置命令按钮“筛选”的“单击”事件过程为“出生年度筛选”宏。《计算机基础与Access数据库程序设计7》ppt课件(全)(6)运行学生表筛选编辑窗体,输入出生年度,单击“筛选”按钮即可编辑出生年度为指定值的学生信息,如图所示。《计算机基础与Access数据库程序设计7》ppt课件(全)3.建立条件宏宏可以有运行条件,这就是条件宏。条件宏只在条件满足时才执行。在宏设计器窗口处于活动状态下选择“视图”→“条件”命令或单击“条件”工具栏按钮,或右击宏设计器窗口标题栏并在弹出的快捷菜单中选择“条件”命令,即可在设计器窗口“操作”列之前增加一个条件列。例如,为“出生年度筛选”宏增加一个条件:当输入值大于1950时才进行筛选,如图所示。《计算机基础与Access数据库程序设计7》ppt课件(全)增加了条件后,再次运行学生表筛选编辑窗体,只有当输入的出生年度为1950年之后时,单击“筛选”按钮才实际执行筛选操作,否则不执行筛选操作。4.建立宏组可以把多个宏组织到一起形成宏组,其设计方法如下。(1)打开宏设计器。(2)在宏设计器中增加“宏名”列。在宏设计器窗口处于活动状态下选择“视图”→“宏名”命令或单击“宏名”工具栏按钮,或右击宏设计器窗口标题栏并在弹出的快捷菜单中选择“宏名”菜单,即可在设计器窗口“操作”列之前(如果有“条件”列,则在“条件”列之前)增加一个宏名列。《计算机基础与Access数据库程序设计7》ppt课件(全)(3)设计宏组中的每个宏。宏组中每个宏定义首行定义宏名,其他行不能定义宏名,一个宏从宏名定义行开始,到下一个宏名定义行(如果有)的前一行结束。下图结出的是一个名为“宏组举例”的宏组,其中包含M1和M2两个宏。《计算机基础与Access数据库程序设计7》ppt课件(全)运行调用宏组中的宏的方法是在宏名之前加宏组名前缀,例如,“宏组举例”中定义的两个宏的调用方法如下:宏组举例.M1宏组举例.M25.AutoExec自动执行宏可以建立一个宏名为AutoExec(字母大小写不限)的宏,在打开数据库时,将首先打开启动窗体(如果在“启动”对话框中设置了启动窗体),然后会立即执行AutoExec宏。可以不设置启动窗体,而是利用Autoexec宏打开应用程序的初始窗体。一个数据库中只能建立一个Autoexec宏。《计算机基础与Access数据库程序设计7》ppt课件(全)6.运行测试宏在宏设计器窗口活动状态下,选择“运行”→“运行”命令或单击“运行”按钮,即可运行当前正在设计的宏或宏组中的第一个宏。可以单步调试宏,操作步骤如下:(1)打开或激活宏设计器窗口,假定打开“宏组举例”。(2)选择“运行”→“单步”命令或单击“单步”按钮,切换选中单步(“单步”工具栏按钮反相显示)。(3)选择“运行”→“运行”命令或单击“运行”按钮,即打开“单步执行宏”对话框,单击“单步执行”按钮执行当前操作,然后继续显示下一个操作,单击“停止”按钮终止运行,单击“继续”按钮执行当前操作并继续显示下一个操作。《计算机基础与Access数据库程序设计7》ppt课件(全)7.2VBA程序结构宏只能实现一些简单的处理功能,对于复杂的处理而言,很难通过宏来加以解决,这就需要利用VBA(VisualBasicforApplication)应用程序来解决。VBA程序是一个符合VBA语法要求的语句的有限序列,其中的每个语句都有明确的操作功能并能被Access理解和执行。程序中语句序列一般也叫程序代码或代码。VBA程序一般被分成不同的功能单位,叫做过程。过程可以单独被触发执行。Access中可以有3类VBA程序:一是对象事件过程,二是独立子过程,三是独立函数过程。事件过程属于对象的组成部分,它在对象事件发生时被触《计算机基础与Access数据库程序设计7》ppt课件(全)发执行一次。独立子过程和独立函数过程只能在模块中定义并可在其他程序代码中直接调用执行。7.2.1对象事件过程在面向对象程序设计中,对象是程序的基本组成单位,程序设计过程就是每一个对象的设计过程。对象包含属性、事件和方法。属性用于定义对象的特征,每类对象都有许多属性,这些属性又可以分类进行设计,例如,窗体及窗体控件的属性窗口中就把属性分为“格式”、“数据”、“其他”等类别。方法是对象可以执行的预定义操作,每类对象都有一系列方法可以调用执行,在Access对象设计中,一般不需要用户调用方法,但在设计VBA代码时,则可能需要调用对象方法以实现某种处理操作。《计算机基础与Access数据库程序设计7》ppt课件(全)事件是对象可以响应的操作,每类对象都预定义了一系列事件。以命令按钮的“单击”事件为例,运行窗体时如果单击某一命令按钮,就触发了相应按钮的单击事件,这时就会执行为该事件指定的操作,这个操作可以是一个宏,也可以是一个事件过程(VBA过程)。事件代码以PrivateSub开始,以EndSub结束。编辑对象的某一事件过程的操作方法有两种,第一种操作方法如下:(1)打开对象的属性窗口,选择“事件”选项卡。(2)将光标置于指定事件的编辑框,这时,编辑框变为下拉列表,从下拉列表中选择“[事件过程]”。《计算机基础与Access数据库程序设计7》ppt课件(全)(3)单击编辑框右侧的浏览按钮,如左下图所示,即可打开VisualBasic编辑器及事件过程代码编辑窗口,如右下图所示。第二种操作方法如下:(1)右击相应控件,从弹出的快捷菜单中选择“事件生成器”命令。如果已经生成过事件代码则会打开事件代码编辑窗口;《计算机基础与Access数据库程序设计7》ppt课件(全)如果尚未生成事件代码,系统会打开“选择生成器”对话框,如图所示。(2)单击选中对话框列表中“代码生成器”,单击“确定”按钮,即可打开VisualBasic编辑器及事件过程代码编辑窗口。(3)在代码编辑窗口中可以通过对象选择下拉列表选择合适的对象,通过事件下拉列表选择待编辑代码的事件。《计算机基础与Access数据库程序设计7》ppt课件(全)打开事件代码编辑窗口并确认对象及事件无误后,就可以输入对应的程序代码,输入完成后,关闭窗口即可。对象事件过程是包含在对象之内的,是对象的组成部分。如果希望程序代码可以独立存在并为多个对象所使用,就需要设计独立模块和独立过程。7.2.2模块与独立过程独立过程包括独立子过程和独立函数过程,均保存在模块对象中。一个模块可以保存多个独立子过程和独立函数过程。1.模块模块分为标准模块(简称模块)和类模块两种,本书不介《计算机基础与Access数据库程序设计7》ppt课件(全)绍类模块。模块(标准模块,下同)是VBA过程、声明、语句的集合,这些过程、声明、语句作为一个模块对象存储在一起。模块的首部是选项设置及变量说明区,在此区域可以设置模块参数和定义模块变量、符号常量。在选项设置及变量说明区之后是过程代码区,在此区域可以定义一个或多个独立子过程或独立函数过程。过程之间不能有任何其他语句存在。要设计VBA模块,首先要进入VBA开发环境,即VB编辑器。打开VB编辑器的方法有以下几种:选择“工具”→“宏”→“VisualBasic编辑器”命令或按Alt+F11《计算机基础与Access数据库程序设计7》ppt课件(全)键,均可打开VisualBasic编辑器,如图所示。右击数据库操作界面并在弹出的快捷菜单中选择“VisualBasic编辑器”命令同样可以打开VisualBasic编辑器。选择“插入”→“模块”命令,或选择数据库操作界面中“模块”,然后单击“新建”工具栏按钮,可以在打开VisualBasic编《计算机基础与Access数据库程序设计7》ppt课件(全)辑器的同时打开新建模块代码编辑窗口,如图所示。选择数据库操作界面中的“模块”对象,双击已有的模块或单击选中已有模块,然后单击“设计”工具栏按钮,均可在打开VisualBasic编辑器的同时打开相应模块代码编辑窗口。在VisualBasic编辑器中可以同时打开多个模块代码设计《计算机基础与Access数据库程序设计7》ppt课件(全)窗口。常用的编辑器操作如下:选择编辑器“插入”→“模块”命令或选择编辑器“插入模块”按钮,可以插入一个新模块并打开相应的代码编辑窗口。选择编辑器“插入”→“过程”命令或选择编辑器“插入过程”按钮,系统先打开一个“添加过程”对话框,如图所示。输入过程名称并选择过程类型及其作用范围,然后单击“确定”按钮,即在当前活动的模块代码编辑窗口中插入一个新的过程框架。《计算机基础与Access数据库程序设计7》ppt课件(全)选择“文件”→“保存”命令或单击“保存”按钮,可以保存所有模块。可以关闭任一模块代码编辑窗口,这时并不保存模块代码。可以在模块中定义独立子过程和独立函数过程。2.独立子过程独立子过程可以完成某种处理请求,执行完成后,返回到调用语句的下一条语句继续执行。依据过程的作用范围不同,独立子过程可以分为公共过程和私有过程两种。公共的独立子过程框架形如:PublicSubqqq()EndSub《计算机基础与Access数据库程序设计7》ppt课件(全)私有的独立子过程框架形如:PrivateSubwww()EndSubqqq、www为过程名,实际定义过程时过程名会有所变化。一个模块中的过程名不能重复。在框架的首尾语句行之间添加自己的设计代码即可。独立子过程调用是在代码中直接把子过程名作为程序行即可。例如,调用www子过程只须把www作为一条语句即可。有参数的过程定义及其调用将在节介绍。3.独立函数过程独立函数过程可以完成特定的计算处理并把计算结果返《计算机基础与Access数据库程序设计7》ppt课件(全)回给调用程序。独立函数过程同样可以分为公共过程和私有过程两种,公共函数过程框架形如:PublicFunctioneee()EndFunction私有函数过程框架形如:PrivateFunctionfff()EndSub与子过程一样,eee、fff为过程名且不能与模块内的其他过程名重复。在框架的首尾语句行之间添加自己的设计代码即可。《计算机基础与Access数据库程序设计7》ppt课件(全)独立函数过程可以在表达式中调用,调用形式是函数名后加括号。有参数的函数过程定义及其调用将在节介绍。4.运行测试独立子过程可以运行测试独立子过程。将光标置于待运行子过程语句行,然后选择“运行”→“运行子过程/用户窗体”命令或单击“运行子过程/用户窗体”按钮,即可运行相应的子过程。7.3VBA程序中的运算量、函数、语句无论是事件过程还是独立过程都需要设计者编写实际的程序代码以完成预定要求。程序是语句的有限序列,语句又是如何构成的呢?语句中一般包含语句定义符,表达式等,表达式中的运算量可以是常量、变量、对象属性、函数等。《计算机基础与Access数据库程序设计7》ppt课件(全)在前面的章节中已经介绍了数据类型、常量、表达式等概念,本节不再重复介绍。7.3.1常量、变量说明与变量、对象属性赋值常量一般有两种形式,一种形式就是使用常量本身,另一种形式是使用符号常量。符号常量需要先定义、后使用。变量是在程序中定义的,在程序运行期间取值可以被改变的运算量。和符号常量一样,变量也需要先定义、后使用。符号常量和变量都有确定的数据类型,定义时既需要指定是什么,也要指定数据类型。一般把定义常量/变量叫做常量/变量说明,相应的语句叫做常量/变量说明语句。《计算机基础与Access数据库程序设计7》ppt课件(全)1.常量、变量说明符号常量说明语句的语法格式如下:[Public|Private]Const<常量名>As<数据类型定义符>=<常量值>[,<常量名>As<数据类型定义符>=<常量值>……]变量说明语句的语法格式如下:{Dim|Public|Private}<变量名>[As<数据类型定义符>][,<变量名>[As<数据类型定义符>]……]Public、Private说明符只能用在模块首部的说明语句中,不能在过程内部使用。Dim既可以在模块首部使用,也可以在过程中使用。在模块首部选项设置及变量说明区用Private或Dim说明《计算机基础与Access数据库程序设计7》ppt课件(全)的变量属于私有变量,可以在整个模块内使用,简称模块变量。如果希望某些模块变量可以在其他模块中使用,把Private或Dim换成Public即可,用Public说明的变量一般也叫全局变量。在过程内部说明的变量只能在该过程内部使用,一般叫做局部变量。Private、Public说明常量的作用范围与说明变量相同。常量名、变量名命名规则如下:第一个字符必须是英文字母或汉字。不能在名称中使用算术运算符(+,-,*,/,\,^)及空格、句点(.)、惊叹号(!)、或@、&、$,#等字符。名称的长度不能超过255个字符,一般以10个字符以内为宜。《计算机基础与Access数据库程序设计7》ppt课件(全)名称不能与VBA语句定义关键字(如Sub、Dim、Function等)相同,同一过程内的名称不能相同。常量、变量说明中的数据类型定义符一般是一个英文单词(如表7-2所示,定长字符串须带一个整数参数)。Boolean 逻辑型String 变长字符串型String*<整数> 定长字符串型Date 日期型Currency 货币型Byte 字节型Integer 整型《计算机基础与Access数据库程序设计7》ppt课件(全)Long 长整型Single 单精度型Double 双精度型Variant 变体型常量说明有以下3种可能的形式(以单常量说明为例):(1)PublicConst<常量名>As<数据类型定义符>=<常量值>,说明全局常量。(2)PrivateConst<常量名>As<数据类型定义符>=<常量值>,说明私有常量。(3)Const<常量名>As<数据类型定义符>=<常量值>,说明私有常量。《计算机基础与Access数据库程序设计7》ppt课件(全)【例7-2】下列常量说明是否合法。(1)PublicConstqqqAsInteger=200(2)ConstA1AsDouble=2.234(3)PrivateConstA2#AsLong=3456(4)ConsttyAsbooLeaN=False(5)ConstscAsString*4="123456789"【解答】(1)说明一个整型公共常量qqq,其取值为200。(2)说明一个私有双精度型常量A1,其取值为2.234。(3)说明不合法,常量名包含非法字符#号。《计算机基础与Access数据库程序设计7》ppt课件(全)(4)说明一个私有逻辑型变量ty,其初值为False。关键字输入时大小写无关,本题booLeaN是正确的。(5)说明一个定长字符串常量sc,其值为字符串"1234"。虽然字符串初值为"123456789",但因是定长字符串,所以只取其前4个字符。在VBA代码中可以使用一些预定义常量,这些常量由系统定义且均以vb开头。程序中可以直接使用这些常量(常数)。除了符号常量之外,还可以直接在表达式中使用常数,为区别这些常数的准确数据类型,一般在常数后面加类型说明符后缀。例如,1234@表示货币常数1234,45.56#表示双精度常数45.56。《计算机基础与Access数据库程序设计7》ppt课件(全)变量说明有以下几种基本形式(以单变量说明为例):(1)Dim<变量名>As<数据类型定义符>,说明指定类型的私有变量或局部变量。(2)Public<变量名>As<数据类型定义符>,说明指定类型的公共变量。(3)Private<变量名>As<数据类型定义符>,说明指定类型的私有变量。(4)Dim<变量名>,说明Variant型私有变量或局部变量。(5)Public<变量名>,说明Variant型公共变量。(6)Private<变量名>,说明Variant型私有变量。使用(4)~(6)格式说明时,变量名之后可以加类型说明符。《计算机基础与Access数据库程序设计7》ppt课件(全)加类型说明符时表示说明指定类型的变量(使用变量时可以带或不带类型说明符),不加类型说明符时表示说明一个Variant类型的变量。Variant类型的变量可以赋任何类型的值。【例7-3】分析下列变量说明。(1)Dimss#(2)PublicwwwAsLong(3)Privateqqq,eeeAsString(4)Dimtt(5)pUbliCu1AsDouble(6)Privatey-1AsVariant(7)Dima1Asdate《计算机基础与Access数据库程序设计7》ppt课件(全)(8)DimtsAsString*20【解答】(1)说明一个私有或局部双精度型变量ss,(使用时用ss或ss#表示均可)。(2)说明一个长整型公共变量www。(3)说明两个私有变量。第一个变量qqq没有类型说明,是Variant型的,第二个变量eee为字符串型的。(4)说明一个私有或局部变量tt,因tt没有类型说明符,因此是Variant型的。(5)Public符合语法要求,说明一个双精度型公共变量u1。(6)变量名中包含减号,不合语法要求,说明无效。《计算机基础与Access数据库程序设计7》ppt课件(全)(7)date符合语法要求,说明一个私有或局部日期/时间型变量a1。(8)说明一个长度为20的定长字符串变量。变量也可以不说明,而是通过赋值语句自动建立。这是一种不规范的变量使用方法,建议不要使用。2.数组说明数组是同类型变量的有序集合,其中的每个变量都叫做数组元素。数组元素之间通过下标加以区分,下标一般是一个大于或等于0的连续整型数字,相当于数组元素在数组中的位置序号。数组必须先说明,后使用。《计算机基础与Access数据库程序设计7》ppt课件(全)有两种数组说明方法,相应说明语句的典型语法格式如下:{Dim|Public|Private}<数组名>(<下标1上界>[,<下标2上界>])[As<数据类型定义符>]{Dim|Public|Private}<数组名>(<下标1下界>To<下标1上界>[,<下标2下界>To<下标2上界>])[As<数据类型定义符>]Dim、Public、Private作用同前。数组名是数组的标识,其命名规则与变量名相同。 第一种说明方法只给出下标上界,下标下界通过OptionBase语句指定,其语法格式为:OptionBase{0|1}OptionBase语句只能在模块首部选项设置及变量说明区中使用一次,用于设置模块内所有数组说明中未说明的数组下标下界。OptionBase0表示下标下界为0,OptionBase1表示《计算机基础与Access数据库程序设计7》ppt课件(全)下标下界为1。只有一个下标时,相应的数组是一维数组,有两个下标的数组是二维数组。第二种说明方法指定每一个下标的下界和上界,与OptionBase设置无关。习惯上把第一个下标称为行,第二个下标称为列。【例7-4】分析下面程序段中说明的数组情况(假定模块首部执行了OptionBase0)。DimAA(20,12)AsInteger,BB(2)AsLongPublicCC(1To2,5To6)AsByte【解答】AA数组是一个二维整型数组,有21行、13列,共有273个数组元素:AA(0,0),AA(0,1),…,AA(20,11),AA(20,12)。《计算机基础与Access数据库程序设计7》ppt课件(全)BB数组是一个一维长整型数组,共有3个数组元素:BB(0),BB(1),BB(2)。CC数组是一个二维字节型数组,有二行、二列,共有4个数组元素:CC(1,5),CC(1,6),CC(2,5),CC(2,6)。3.变量赋值赋值语句用于对变量(包括数组元素)赋值,其语法格式如下:
<变量名>=<表达式>赋值语句首先求解表达式并将计算结果值赋给指定的变量。赋值语句中表达式的类型应与变量的类型一致,否则可能导致语法错误或数据错误。表达式中出现的所有变量必须已经说明和赋值,否则可能产生错误。《计算机基础与Access数据库程序设计7》ppt课件(全)赋值语句中的变量一般应该在赋值语句之前已经说明。如果变量尚未说明,则会依据表达式类型自动建立一个对应类型的私有变量。规范的做法是先说明变量,之后再给该变量赋值。变量可以多次被赋值,变量的当前值是最近一次赋值的结果。4.对象引用与对象属性赋值可以在VBA代码中操作Access对象,例如,窗体、报表等对象及其控件均可通过VBA操作。引用窗体及窗体控件的常用方法如下:
Forms!<窗体名>!<控件名>,例如,Forms!MyForm!Text1表示引用MyForm窗体上控件Text1的值(当前输入/显示的Value属性值)。《计算机基础与Access数据库程序设计7》ppt课件(全)对象名(窗体名、控件名)加方括号,例如Forms!MyForm!Text1也可以表示为Forms![MyForm]![Text1]或[Forms]![MyForm]![Text1]。引用窗体属性的常用方法如下:
Forms!<窗体名>.<属性名>,例如,Forms!MyForm.Caption表示引用MyForm窗体的标题属性。对象名加方括号,例如,Forms![MyForm].Caption或[Forms]![MyForm].Caption与Forms!MyForm.Caption是等价的。引用窗体控件属性的常用方法如下:
Forms!<窗体名>!<控件名>.<属性名>,例如,Forms!MyForm!Text1.Locked表示引用MyForm窗体上控件Text1的Locked属性。《计算机基础与Access数据库程序设计7》ppt课件(全)对象名(窗体名、控件名)加方括号,例如Forms!MyForm!Text1.Locked也可以表示为Forms![MyForm]![Text1].Locked或[Forms]![MyForm]![Text1].Locked。上述方法同样适用于报表,把Forms换成Reports、窗体名换成报表名即可。可以在VBA代码中对窗体、报表属性或窗体、报表控件属性赋值。下列代码是相应的例子,说明在注释中给出。Forms![MyForm].Caption="加法测试" '修改MyForm窗体标题Forms!MyForm!Text2=Null '给Text2赋空值Forms!MyForm!Text1.Locked=True '锁定文本框Text1
在当前窗体代码模块(对象事件过程代码模块)内引用控件《计算机基础与Access数据库程序设计7》ppt课件(全)时,可以采取下列更为简单的方式:
Me!<控件名>.<属性名>,例如,Me!Text1.Locked表示引用当前窗体上控件Text1的Locked属性。
<控件名>.<属性名>,例如,Text1.Locked表示引用当前窗体上控件Text1的Locked属性。控件名加方括号,例如Text1.Locked也可以表示为[Text1].Locked。窗体、报表、控件属性在VBA代码中引用时必须使用其原始属性名,不能用属性的中文名称。常用属性的原始属性名如表7-3所示,应熟记其中的属性名。《计算机基础与Access数据库程序设计7》ppt课件(全)5.窗体/报表节对象引用可以引用窗体节对象以设置窗体节属性。窗体节属性的引用方式如下:
Forms!<窗体名>.Section(索引值)。索引值可以使用数值或符号常量,0(acDetail)表示主体节,1(acHeader)表示窗体/报表页眉节,2(acFooter)表示窗体/报表页脚节,3(acPageHeader)表示窗体/报表页面页眉节,4(acPageFooter)表示窗体/报表页面页脚节。当前窗体/报表可以使用Me指代。7.3.2内部函数内部函数是VB预定义的函数,可以在表达式中直接调用。常用的内部函数已在节表4-2、表4-3中介绍过了,另外,《计算机基础与Access数据库程序设计7》ppt课件(全)有两个重要的函数需要特别说明,一个是输入函数InputBox,另一个是输出函数MsgBox。InputBox函数用于返回输入的字符串数据,其典型语法格式如下:InputBox(<提示>[,<标题>][,<默认值>][,<x坐标>][,<y坐标>])InputBox函数显示一个对话框,“标题”字符串为对话框标题,“提示”字符串为对话框内显示的提示信息,对话框中显示一个输入编辑框用于接收输入的字符串,“默认值”字符串为输入框中预置的输入内容,x,y坐标分别用于指定对话框左边界距屏幕左边沿的距离和对话框上边界距屏幕上边沿的距离,坐标计量单位为VB计量单位。省略x,y坐标时将居中显示对话框。例如,下列语句执行时将居中显示如下页图所示的对话《计算机基础与Access数据库程序设计7》ppt课件(全)框,输入数据并单击“确定”按钮后,关闭对话框并把输入的字符串返回,然后赋给变量sss。sss=InputBox("请输入一个数字:","输入数据","1")InputBox函数只能输入字符串数据,如果要输入其他类型的数据,需要用类型转换函数进行类型转换。例如,假定aaa为整型变量,需要用Val函数把InputBox函数输入结果转《计算机基础与Access数据库程序设计7》ppt课件(全)换为数值型数据才能赋给aaa:aaa=Val(InputBox("请输入一个数字:","输入数据","1"))MsgBox函数用于显示一个提示信息框并返回用户响应结果,其典型语法格式如下:MsgBox(<提示信息>[,<按钮设置值>[,<标题>]])“提示信息”字符串为对话框显示的信息。“标题”字符串指定对话框标题。“按钮设置值”为一整数,用于设置对话框显示按钮、图标等参数,该值由按钮类型与数目、图标样式、缺省设置、模式参数等四类数据中各取一个(或0个)相加得到。如表7-4所示为4类参数值说明。用户响应对话框操作并关闭对话框后,函数返回用户单击的按钮参数,如表7-5所示。《计算机基础与Access数据库程序设计7》ppt课件(全)在使用按钮设置值参数时,可以使用表达式依次把各设置参数相加,这样既简单又直观,例如,下列语句:ww=MsgBox("请选择操作按钮",3+64+256+0)语句中3表示显示“是”、“否”、“取消”按钮,64表示显示蓝色信息符号图标,256表示第二个按钮(“否”按钮)为默认按钮,0表示对话框挂起应用程序直至对话框关闭。执行时显示的对话框如图所示。单击按钮关闭对话框后,返回值被赋给ww变量,根据该变量的值即可知道用户单击的是哪个按钮。《计算机基础与Access数据库程序设计7》ppt课件(全)7.3.3常用语句及对象程序是语句的有限序列,语句是一行一行依次排列的,一般每行一个语句。可以在一行输入多条语句,这时各语句之间要用英文冒号(:)分隔开来。当语句行较长时,可以多行书写,除最后一行外,前面各行末尾需要使用下划线(_)续行符(续行符之前至少要留一个空格,不能与语句内容连着书写)。不能在表达式或对象名中间位置续行。程序中的常用语句可以分为如下几类:注释语句。说明语句。如变量说明、数组说明、选项说明等。变量赋值语句。流程控制语句。《计算机基础与Access数据库程序设计7》ppt课件(全)输入输出语句。
DoCmd对象及其他对象方法调用。1.注释注释语句用于在程序中添加注释说明。注释语句并不影响程序的运行,但对程序设计及维护却非常重要,程序中应有适当的注释说明。注释语句有两种基本形式,一种是用Rem引导注释文本,另一种是用英文单引号引导注释文本。用Rem引导注释时,Rem与注释文本之间至少要留一个空格,使用单引号无此限制。用Rem引导的注释是一个独立的语句,不能添加在其他语句之后,用单引号引导的注释既可以单独作为一个注释语句,也可以添加到其他语句行的末尾。续行符之后不能添加用单引号引导的注释。《计算机基础与Access数据库程序设计7》ppt课件(全)【例7-5】分析下列程序段中的语句(假定模块首部执行了OptionBase1)。Rem说明变量及数组DimsssAsString'说明变量sss'多语句行,各语句之间用冒号分隔Dimaa(2,2)AsLong:Dimqq@'说明数组、变量【解答】本段程序包含4个语句行。第一行是一个注释语句;第二行是一个变量说明语句,语句末尾有单引号引导的注释说明;第三行是一条用单引号引导的注释语句;第四行是一个多语句行,第一条语句说明一个2行2列的长整型数组aa,第二条语句说明一个货币型变量qq,语句行末尾为单引号引导的注释。2.说明语句常量、变量说明语句和变量赋值语句前面已经介绍过,不《计算机基础与Access数据库程序设计7》ppt课件(全)再赘述。说明语句一般放在程序的首部,变量赋值语句用于实现程序的运算处理。前面介绍了数组下标选项说明语句OptionBase语句,还有另一个十分重要的选项说明语句OptionCompare,其语法格式如下:OptionCompare{Binary|Text|Database}OptionCompare语句用于设置字符串比较方法,和OptionBase一样只能在模块首部使用,其作用范围是整个模块。OptionCompareBinary设置的比较方式是对字符二进制编码进行比较,区分字母大小写。OptionCompareText设置的比较方式按字符比较,不区分字母大小写。《计算机基础与Access数据库程序设计7》ppt课件(全)OptionCompareDatabase设置则依据Access选项设置进行字符串比较。3.输入输出可以用InputBox函数实现数据输入,也可以用窗体控件实现数据输入。可以用MsgBox函数实现数据输出,也可以用窗体控件或Debug对象实现数据输出。Debug对象的Print方法可以在立即窗口输出结果,Debug对象的Print方法语法格式如下:Debug.Print<输出表达式列表>语句执行时依次输出表达式列表中的每个表达式的值。输出表达式列表中的输出表达式可以用逗号或分号分隔。用逗号分隔时,下一表达式的值移动到当前行的下一个Tab位置输出,用分号分隔时,下一表达式的输出位置在上一个表达式值《计算机基础与Access数据库程序设计7》ppt课件(全)之后留一个空格之后的位置处(字符串、数字0不输出符号位,非0数字输出一个符号位,+号用一个空格符代替)。文本框是最常用的数据输入、输出控件。【例7-6】VBA程序中可以用Debug对象的Print方法输出数据,输出结果在“立即”窗口显示。PublicSubqqq()DimiAsInteger
Fori=1To10Debug.PrintiNextEndSub《计算机基础与Access数据库程序设计7》ppt课件(全)运行时,立即窗口显示一列数据,依次为1,2,3,4,5,6,7,8,9,10。打开立即窗口的方法如下:在VisualBasic编辑器窗口选择“视图”→“立即窗口”命令。或在VisualBasic编辑器窗口活动状态下按Ctrl+G快捷键。4.DoCmd对象
DoCmd对象是VBA代码中可以直接引用的对象,一般在VBA代码中调用DoCmd对象的方法实现特定的操作(在节中给出的自动生成的代码中出现过该对象的Close方法调用)。DoCmd对象的常用方法如表7-6所示。《计算机基础与Access数据库程序设计7》ppt课件(全)【例7-7】下列过程执行时将首先向tScore表插入一条新记录,然后打开“加法测试”窗体。PublicSubOpFormSub() DoCmd.RunSQL"InsertintotScorevalues('2011020110','c5',90)" DoCmd.OpenForm"加法测试"EndSub7.4VBA程序流程控制程序执行时一般是按语句的先后顺序依次执行的,有时可能需要改变这种执行顺序,通过流程控制语句可以实现这样的处理要求。典型的流程控制结构包括选择结构和循环结构。选择结构用于程序分支控制,循环结构用于控制程序反复执行一个程序段。《计算机基础与Access数据库程序设计7》ppt课件(全)7.4.1选择结构控制选择结构可以依据条件选择程序的执行路线。VBA有两种选择控制语句,一是If条件分支语句,二是SelectCase多分支语句。1.If条件分支语句If语句的典型语法结构有四种,第一种格式为:If<条件>Then<语句>语句执行时,判断条件(逻辑表达式)是否成立(为“真”),如果成立则执行Then后面的语句,然后执行下一条语句。如果条件不成立,则不执行Then后面的语句而是直接执行下一条语句。《计算机基础与Access数据库程序设计7》ppt课件(全)第二种格式为:If<条件>Then <语句序列>EndIf语句执行的特点与第一种格式相同。执行时首先判断条件,如果成立则执行语句序列,然后执行EndIf之后的语句。如果条件不成立则直接执行EndIf之后的语句。第三种格式为:If<条件>Then <语句序列1>Else <语句序列2>EndIf《计算机基础与Access数据库程序设计7》ppt课件(全)语句执行时首先判断条件,如果成立则执行语句序列1,否则执行语句序列2,执行完语句序列1或语句序列2后继续执行EndIf之后的语句。第一种和第二种格式可以选择执行或不执行(跳过)一个语句或语句序列,第三种格式则依据条件选择执行两个不同的语句序列。第四种格式为:If<条件1>Then <语句序列1>ElseIf<条件2>Then <语句序列2>...ElseIf<条件n-1>Then <语句序列n-1>Else <语句序列n>EndIf《计算机基础与Access数据库程序设计7》ppt课件(全)语句依次判断条件,如果当前条件(条件i)不成立,则跳过语句序列i并继续判断下一个条件。如果条件i成立,则执行语句序列i,然后继续执行EndIf之后的语句,如果所有条件都不成立,则执行语句序列n。执行完某一分支语句序列之后,继续执行EndIf后面的语句。【例7-8】If语句应用举例。本例通过InputBox函数输入一个数字字符串并将其转换为数值,然后判断该数值并显示消息框。DimaaAsIntegeraa=Val(InputBox("请输入一个数字:","输入数据","1"))Ifaa>0ThenMsgBox("输入一个正数")ElseIfaa=0ThenMsgBox("输入零")ElseMsgBox("输入一个负数")EndIf《计算机基础与Access数据库程序设计7》ppt课件(全)2.SelectCase多分支语句当条件判断较多时,使用If语句会出现ElseIf过多的情况。一方面,语句比较繁琐,另一方面也不便于程序分析。可以使用SelectCase语句解决这样的问题,其语法格式如下:SelectCase<测试表达式> [Case<表达式列表1> [<语句序列1>] ... [Case<表达式列表n> [<语句序列n>]]] [CaseElse [<语句序列n+1>]]EndSelect《计算机基础与Access数据库程序设计7》ppt课件(全)语句中的测试表达式可以是数值表达式或字符串表达式,执行前,该表达式必须是可以求值的。Case<表达式列表>及CaseElse是可选的。表达式列表中可以包含下列形式的表达式(数值型或字符型):
<表达式>,执行时值是确定的,当测试表达式的值等于表达式的值时满足测试条件。
<表达式1>TO<表达式2>,用于指定值的范围且表达式1<表达式2,当测试表达式的值>=表达式1,同时测试表达式的值<=表达式2的时候满足测试条件。
Is<比较运算符><表达式>,用于比较测试表达式的值和给定表达式的值之间是否满足给定的比较关系,是则满足测试条件。《计算机基础与Access数据库程序设计7》ppt课件(全)语句执行时,首先计算测试表达式的值,然后依次判断各Case条件是否满足(表达式列表中任一表达式满足测试条件即可),如果某一Case条件满足则执行对应的语句序列,然后继续执行EndSelect之后的语句。当所有Case条件都不满足时,如果语句中没有CaseElse,则执行EndSelect之后的语句,否则执行CaseElse对应的语句序列,然后继续执行EndSelect之后的语句。【例7-9】SelectCase语句应用举例(对应于【例7-8】的SelectCase语句)。DimaaAsIntegeraa=Val(InputBox("请输入一个数字:","输入数据","1"))SelectCaseaaCaseIs>0MsgBox("输入一个正数")《计算机基础与Access数据库程序设计7》ppt课件(全)
Case0MsgBox("输入零")CaseElseMsgBox("输入一个负数")EndSelect【例7-10】字符判断(假定模块首部设置了OptionCompareBinary)。DimC1AsStringC1=InputBox("请输入一个字符:","输入数据","")IfLen(Trim(C1))=0ThenC1=Space(1) '没输入字符则赋给aa一个空格IfLen(C1)>1ThenC1=Left(C1,1) '输入多个字符则取首字符SelectCaseC1Case""MsgBox("输入空格符")《计算机基础与Access数据库程序设计7》ppt课件(全)Case"0"To"9"MsgBox("输入数字")Case"A","B"To"Y",Is="Z"MsgBox("输入大写字母")Case"a"To"z"MsgBox("输入小写字母")CaseElseMsgBox("输入其他字符")EndSelect7.4.2循环结构控制1.循环的基本念有时,让一段程序反复执行若干次可以实现某种特殊的处理要求。以下例7-11是一个用If语句和GoTo语句实现循环结构的例子。《计算机基础与Access数据库程序设计7》ppt课件(全)【例7-11】计算1+3+5+…+199。
DimnAsInteger,sAsLongn=1s=0L:s=s+2*n-1n=n+1Ifn<=100ThenGoToL:MsgBox(Str(s))上述程序中L:为行标号,GoToL:语句为转移语句,程序执行到If语句时,判断n的值,当n<=100时将转移到L:处继续执行。这样,下列两条语句在n=1,2,3,…,100时依次执行一次:
s=s+2*n-1n=n+1《计算机基础与Access数据库程序设计7》ppt课件(全)各次执行时,n、s的变化情况如表7-7所示。前述两个语句反复执行了100次,每次执行后n增1,而s的值则是1+3+5+…的前n项和。s每次执行时都在上一次执行的基础上增加一项。这种能让一段程序反复执行多次的程序结构叫做循环。被反复执行的程序段叫做循环体。实际上,一般不通过GoTo语句实现循环,结构化程序设计思想要求设计者尽可能避免使用GoTo语句。现代程序设计语言都提供了专门的用于实现循环控制的语句。VBA中常用的循环语句有3种,分别是For…Next循环,While…Wend循环和Do…Loop循环。2.For…Next循环For…Next循环是一种循环次数可以预先确定的循环,其《计算机基础与Access数据库程序设计7》ppt课件(全)语法结构如下:For<计数变量>=<初值>To<终值>[Step<增量>] [<循环体语句序列1>] [ExitFor] [<循环体语句序列2>]Next[<计数变量>]计数变量是一个简单数值变量;初值是一个数值,是计数变量开始计数时的初始值;终值是计数变量计数结束时的值,计数值超出该值时循环终止;增量是可选的,为每次循环时计数变量的增加值,省略时为1;循环体语句序列1及循环体语句序列2都属于循环体;ExitFor也包含在循环体之内,执行到该语句时自动结束循环;For、Next是循环控制语句,For为开始、Next为结束,Next后可以跟随计数变量以区分该Next语句是哪个循环的结束语句。《计算机基础与Access数据库程序设计7》ppt课件(全)For循环的执行过程是:首先给循环计数变量赋初值,如果未超出终值,则执行一次循环体,执行到Next语句时,循环计数变量按增量递增,然后继续判断是否超出终值,未超出则继续执行循环体,超出则结束循环。执行循环体时如遇到ExitFor语句,则立即结束循环。循环结束后,继续执行Next语句后的语句。【例7-12】用For…Next循环实现【例7-11】。DimnAsInteger,sAsLongs=0 '变量s清零Forn=1To100 s=s+2*n-1NextMsgBox(Str(s)) '输出s结果《计算机基础与Access数据库程序设计7》ppt课件(全)使用For…Next循环时须注意以下几点:增量可以是正数或负数。增量为正数时,计数值>终值为超出终值;增量为负数时,计数值<终值为超出终值。增量一般是整数,也可以是小数。增量是小数时,计数变量必须是单精度或双精度的。循环次数是确定的,为(终值–初值)/增量+1。循环可以嵌套,但不能交叉(对所有循环都适用),嵌套时,一般把外重循环叫做外循环,内重循环叫做内循环。【例7-13】分析下列For…Next循环。(1)DimiAsSingle《计算机基础与Access数据库程序设计7》ppt课件(全)Fori=1To10Step0.8MsgBox(Str(i))Next(2)DimiAsSingleForn=1To2Fori=0To-9Step-1.5MsgBox(Str(i))NextFori=0To10Step-1.5MsgBox(Str(i))NextNextn(3)DimiAsSingle《计算机基础与Access数据库程序设计7》ppt课件(全)Forn=1To2Fori=0To-9Step-1.5MsgBox(Str(i))NextFori=0To10Step-1.5MsgBox(Str(i))NextnNexti【解答】(1)循环结构正确。i从1循环到10,增量为0.8,i依次取1,1.8,2.6,3.4,4.2,5,5.8,6.6,7.4,8.2,9,9.8,共循环12次,当计数变量变为10.6时超出终值(10),结束循环。(2)属于嵌套循环,在外循环(n循环)内嵌套两个并列循环。n循环执行两次。n循环每次执行时,第一个i循环依次从0、《计算机基础与Access数据库程序设计7》ppt课件(全)-1.5、-3、-4.5、-6、-7.5、-9共执行7次循环,第二个i循环结束循环条件是i小于终值,i赋初值后即满足条件,所以一次都没执行。(3)属于嵌套循环,因存在交叉(n循环和第二个i循环),所以属于错误嵌套,根本不能执行。3.While…Wend循环While…Wend循环是一种循环次数不确定的循环,其语法结构如下:While<条件> [<循环体语句序列>]WendWhile…Wend循环执行时首先判断循环条件,如果条件成《计算机基础与Access数据库程序设计7》ppt课件(全)立(条件表达式结果为“真”)则执行一次循环体语句序列,然后继续判断条件。如此反复循环直到条件不成立时结束循环,继续执行Wend之后的语句。【例7-14】用While…Wend循环实现【例7-11】。DimnAsInteger,sAsLongs=0n=1Whilen<=100s=s+2*n-1n=n+1WendMsgBox(Str(s))While…Wend循环的循环体应能影响循环条件的取值,否则循环就永远不会结束,这种情况叫做死循环。《计算机基础与Access数据库程序设计7》ppt课件(全)4.Do…Loop循环与While…Wend循环一样Do…Loop循环也是一种循环次数不能预先确定的循环,它有两种格式,第一种语法格式如下:Do[{While|Until}<条件>] [<循环体语句序列1>] [ExitDo] [<循环体语句序列2>]Loop第二种语法格式如下:Do [<循环体语句序列1>] [ExitDo] [<循环体语句序列2>]Loop[{While|Until}<条件>]《计算机基础与Access数据库程序设计7》ppt课件(全)两种格式的循环都可以省略条件,这时,除非循环体能够执行到ExitDo语句,否则即是死循环。执行到ExitDo语句时,立即结束循环,继续执行Loop语句之后的语句。第一种格式首先判定条件,第二种格式先执行循环体,然后判定条件。如果是While<条件>,则当条件成立(为“真”)时继续执行循环体,条件不成立时结束循环。如果是Until<条件>,则当条件不成立时继续下一次循环,条件成立时结束循环。结束循环后,继续执行Loop语句之后的语句。【例7-15】用Do…Loop循环实现【例7-11】。格式1:DimnAsInteger,sAsLongs=0n=1《计算机基础与Access数据库程序设计7》ppt课件(全)DoWhilen<=100 s=s+2*n-1 n=n+1LoopMsgBox(Str(s))格式2(仅循环部分,其他部分与格式1相同):Do s=s+2*n-1 n=n+1LoopWhilen<=100格式3(仅循环部分,其他部分与格式1相同):DoUntiln>100 s=s+2*n-1 n=n+1Loop《计算机基础与Access数据库程序设计7》ppt课件(全)格式4(仅循环部分,其他部分与格式1相同):Do s=s+2*n-1 n=n+1LoopUntiln>1007.5过程及过程参数过程、尤其是函数过程一般都需要有参数。调用过程时通过参数控制过程的执行结果。一般把过程定义的参数叫做形式参数,简称形参,而把调用时提供的参数叫实际参数,简称实参。实参与形参对应结合,叫做参数传递。7.5.1独立子过程及参数传递在节介绍了最简单的独立子过程的结构及调用方式,实际定义独立子过程时可以修改定义框架。《计算机基础与Access数据库程序设计7》ppt课件(全)1.独立子过程定义典型的独立子过程定义形如:[Private|Public]Sub<子过程名>([<形参列表>]) [语句序列1] [ExitSub] [语句序列2]EndSub选择Private时,过程只能在该过程所在的模块内调用,其他模块中的程序代码不能调用。选择Public时,过程可以被所有模块中的代码调用。Sub是子过程标志关键字。子过程名是子过程的标识,须符合变量命名规范。子过程名后面的括号是必须的。形参列表是可选的,是用逗号分隔的形式参数说明列表。《计算机基础与Access数据库程序设计7》ppt课件(全)典型的形式参数说明格式如下:[ByVal|ByRef]<形参名>[()][As<数据类型>]ByVal表示参数传递方式为值传递,即调用时只把实参的结果值传递给形参,过程返回时实参结果不受任何影响。值传递的实参可以是常量、变量或表达式。ByRef表示参数传递方式为地址传递,调用时把实参的地址传递给形参,过程返回时实参结果为对应形参的赋值结果。地址传递的实参必须是变量。形参为数组时,传递方式必须是地址传递。默认的参数传递方式为地址传递。形参名为过程中使用的参数名称,须符合变量的命名规则。如果形参是一个数组,则应在形参名之后加括号(数组参数前不能选择ByVal)。《计算机基础与Access数据库程序设计7》ppt课件(全)数据类型是可选的。指定数据类型时,对应形参为指定数据类型,省略数据类型时,对应形参是Variant类型的。介于Sub和EndSub之间的语句序列叫做过程体。可以通过ExitSub语句立即退出独立子过程,该语句不需要任何参数。过程执行时依次执行过程体语句,执行完最后一条语句或遇到ExitSub语句时结束过程执行并返回调用程序。一般而言,当独立子过程不需要返回计算结果时,参数传递方式应选择值传递。如果需要返回计算结果,则应通过地址传递参数取得这些计算结果。地址传递参数的实参在返回时保存着过程形参的赋值结果。【例7-16】分析下列过程参数定义的参数传递方式及参数类型。(1)PrivateSubMyExa1(ByVala1AsInteger,b1()AsInteger,ByRefc1)《计算机基础与Access数据库程序设计7》ppt课件(全) ……EndSub(2)PrivateSubMyExa2(a2AsInteger,ByValb2()AsInteger,c2) ……EndSub【解答】(1)定义独立子过程MyExa1并带有3个形式参数a1、b1、c1。a1为值传递整型参数;b1为地址传递整型数组;c1为地址传递Variant型参数。(2)定义独立子过程MyExa2并带有3个形式参数a2、b2、c2。a2定义合法,为地址传递整型参数;b2为数组参数,因数组不能定义为值传递,所以定义非法;c2定义合法,为地址传递Variant型参数。《计算机基础与Access数据库程序设计7》ppt课件(全)2.独立子过程的调用节中已介绍过无参数独立子过程的调用方法,有参数独立子过程的调用格式有如下两种:Call<过程名>[(实参列表)]<过程名>[<实参列表>]实参列表中的参数个数、顺序、类型必须与形参列表的形参对应一致,实参按形参指定的传递方式把参数传递给形参。对应于地址传递形参的实参必须是变量或数组,对应值传递形参的实参可以是变量(包括数组元素)、常量或表达式。使用Call调用时,实参列表必须用括号括起来且应直接接续在过程名之后。不使用Call时,实参列表不能加括号且与过程名之间必须留有空格。《计算机基础与Access数据库程序设计7》ppt课件(全)【例7-17】过程nn用于计算n阶乘,过程qqq实际调用nn计算12!和11!。PrivateSubnn(ByValnAsInteger,sAsLong)'计算n阶乘,结果通过参数s返回DimkAsIntegers=1Rem只有当n在0-12之间时才能够计算Ifn>=0Andn<13ThenFork=1Ton
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国立式高速刨花机项目投资可行性研究报告
- 2020-2025年中国汽油机行业发展前景预测及投资战略研究报告
- 焦作锂电池材料项目可行性研究报告-模板范文
- 天宇监理报告
- 2025年中国直联式离心水泵行业市场发展现状及投资规划建议报告
- 新建加油站可行性研究报告之欧阳语创编
- 2022-2027年中国川芎行业市场全景评估及发展战略规划报告
- 2025年中国番茄酱行业发展前景预测及投资战略研究报告
- 催化裂化装置烟气治理项目可行性研究报告建议书
- 与信息工程学院080800电气工程报录数据分析报告初试+复试+调
- 高三一模“生存与强弱关系思辨”审题立意及范文
- 2025年茂名市高三年级第一次综合测试(一模)物理试卷(含答案)
- 2025年重症医学科(ICU)护理工作计划
- 四川省名校2025届高三第二次模拟考试英语试卷含解析
- 2024各科普通高中课程标准
- 中小学校园课间时间巡查工作方案
- 《垂体瘤规范化诊治》课件
- 早产临床防治指南(2024版)解读
- 艾草种植基地合同(2篇)
- GB/T 30661.10-2024轮椅车座椅第10部分:体位支撑装置的阻燃性要求和试验方法
- 空调制冷管道施工协议
评论
0/150
提交评论