资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机基础与Access数据库程序设计7ppt课件(全),*,计算机基础与Access数据库程序设计,第7章 宏及VBA编程,计算机基础与Access数据库程序设计7ppt课件(全),目 录,7.1,宏,7.2,VBA程序结构,7.3,VBA程序中的运算量、函数、语句,7.4,VBA程序流程控制,7.5,过程及过程参数,7.6,窗体、控件事件编程,7.7,数据库编程,计算机基础与Access数据库程序设计7ppt课件(全),7.1宏,宏(Macro)是由一个或多个操作组成的集合,其中的每个操作都能实现特定的功能,例如打开某个窗体或打印某个报表等。宏操作一般也叫宏命令。Access为开发人员提供了一些预定义的宏命令,这些宏命令可以直接在宏中使用。,7.1.1 宏的类型,宏可以被分成3种基本类型:简单宏、宏组、条件宏。,简单宏由若干基本操作组成,这些操作依次执行。,宏组是由若干个宏组成的集合,其中的每个宏都可以独立运行,相互之间没有必然的联系。宏组更象是一个对宏进行分类管理的管理器,通过它可以把一些功能类似的宏组织到一起。,计算机基础与Access数据库程序设计7ppt课件(全),简单宏在执行时不进行任何条件判断,其中的所有操作总是依次被执行一遍,然后结束。如果宏的某些操作可以依据特定条件执行,当条件成立时执行这些操作,条件不成立时不执行这些操作,这样的宏就叫做条件宏。,条件是一个计算结果为 True/False 的逻辑表达式,其中可以包含字段和窗体控件的值。条件宏会依据条件结果决定执行路径。,7.1.2 常用宏命令,Access提供了丰富的宏命令,常用的宏命令如表7-1所示,需要熟记其中的宏命令。,宏命令一般也称为宏操作,可以直接在宏中使用(调用)。,计算机基础与Access数据库程序设计7ppt课件(全),7.1.3 建立与运行宏,可以在宏设计器(窗口)中设计宏,打开宏设计器的方法如下:,(1)在数据库操作界面选择“宏”对象。,(2)单击“新建”按钮或选择“插入”“宏”命令,即可打开宏设计器窗口,如左下图所示,将光标置于“操作”列时,相应单元格变为下拉表,可以从中选择需要的操作命令,如果操作有参数,在“操作参数”区域即自动列出相应参数,如右下图所示。,计算机基础与Access数据库程序设计7ppt课件(全),可以插入和删除操作行。插入行的方法如下:,将光标置于待插入行位置,然后选择“插入”“行”命令或单击“插入行”按钮。,右击待插入行位置,在弹出的快捷菜单中选择“插入行”命令。,执行上述任一操作均可在当前行之前插入一个空白行。,删除行的方法如下:,将光标置于待删除行位置,然后选择“编辑”“删除行”命令或单击“删除行”按钮。,右击待删除行位置,在弹出的快捷菜单中选择“删除行”命令。,执行上述任一操作均可删除相应的行。,计算机基础与Access数据库程序设计7ppt课件(全),1.建立简单宏,简单宏没有参数,也没有条件,如beep、FindNext、StopMacro等操作均没有参数。例如,如下图所示的宏将先发出嘟嘟声,然后终止宏操作。,在运行宏之前需要先保存宏,单击“保存”工具栏按钮,或选择“文件”“保存”命令,或单击设计器窗口关闭按钮并在显示的保存确认对话框中选择“是”,均可打开“另存为”对话框。,计算机基础与Access数据库程序设计7ppt课件(全),2.建立带参数的宏,许多宏操作都具有参数,设计时需要指定相应的参数,以OpenForm操作为例,其参数如下图所示。,“窗体名称”参数用于指定要打开的窗体,可以直接输入窗体名,也可以单击下拉按钮从下拉表中选择窗体名。,计算机基础与Access数据库程序设计7ppt课件(全),“视图”用于指定打开方式,可以从下拉表中选择“窗体”、“设计”、“打印预览”、“数据表”、“数据透视表”或“数据透视图”。,“筛选名称”用于指定记录筛选条件,该筛选条件可以是一个查询或保存为查询的筛选条件。,“,Where,条件”用于设置,SQL Where,条件,(,不包含,Where,本身,),,任何符合,SQL Where,条件的表达式均可。,“数据模式”用于指定数据编辑方式,可以从下拉表中选择“增加”、“编辑”或“只读”,选择“只读”模式时不能添加或修改数据。,“窗口模式”用于设置窗体打开模式,可以从下拉表中选择“普通”、“隐藏”、“图标”或“对话框”。,计算机基础与Access数据库程序设计7ppt课件(全),假定按左下图所示的参数建立一个名为“编辑学生表”的宏(Where条件为:Year(tStudent!出生日期)1993),其运行效果如右下图所示,只有1993年以前出生的学生才能编辑,其他学生记录不能被编辑。,计算机基础与Access数据库程序设计7ppt课件(全),宏参数中可以包含窗体、报表中的控件值或控件属性值、表的字段等。假定一个名为Exa的窗体上有一个文本框控件Text1,引用该控件值的方法如下:,Forms!Exa!Text1,上述表示方法的含义是窗体集合(Forms)中的Exa窗体上的Text1控件的值。,表的字段的引用方法形如:,表名!字段名,报表上的控件值的引用方法与窗体类似,把Forms换成Reports即可。,【例7-1】设计一个按指定出生年份编辑对应学生信息的窗体。,计算机基础与Access数据库程序设计7ppt课件(全),设计步骤如下:,(1)从学生表编辑窗体复制/粘贴生成一个新窗体“学生表筛选编辑”。,(2)在学生表筛选编辑窗体上添加一个文本框控件“出生年度”,设置其格式属性为“常规数字”,小数位数属性设置为0。,(3)在学生表筛选编辑窗体上添加一个命令按钮“筛选”,设置其标题为“筛选”。,(4)设计一个名为“出生年度筛选”的宏,宏操作为ApplyFilter,Where条件为“Year(出生日期)=Forms!学生表筛选编辑!出生年度”。,(5)打开学生表筛选编辑窗体,设置命令按钮“筛选”的“单击”事件过程为“出生年度筛选”宏。,计算机基础与Access数据库程序设计7ppt课件(全),(6)运行学生表筛选编辑窗体,输入出生年度,单击“筛选”按钮即可编辑出生年度为指定值的学生信息,如图所示。,计算机基础与Access数据库程序设计7ppt课件(全),3.建立条件宏,宏可以有运行条件,这就是条件宏。条件宏只在条件满足时才执行。在宏设计器窗口处于活动状态下选择“视图”“条件”命令或单击“条件”工具栏按钮,或右击宏设计器窗口标题栏并在弹出的快捷菜单中选择“条件”命令,即可在设计器窗口“操作”列之前增加一个条件列。例如,为“出生年度筛选”宏增加一个条件:当输入值大于1950时才进行筛选,如图所示。,计算机基础与Access数据库程序设计7ppt课件(全),增加了条件后,再次运行学生表筛选编辑窗体,只有当输入的出生年度为1950年之后时,单击“筛选”按钮才实际执行筛选操作,否则不执行筛选操作。,4.建立宏组,可以把多个宏组织到一起形成宏组,其设计方法如下。,(1)打开宏设计器。,(2)在宏设计器中增加“宏名”列。在宏设计器窗口处于活动状态下选择“视图”“宏名”命令或单击“宏名”工具栏按钮,或右击宏设计器窗口标题栏并在弹出的快捷菜单中选择“宏名”菜单,即可在设计器窗口“操作”列之前(如果有“条件”列,则在“条件”列之前)增加一个宏名列。,计算机基础与Access数据库程序设计7ppt课件(全),(3)设计宏组中的每个宏。宏组中每个宏定义首行定义宏名,其他行不能定义宏名,一个宏从宏名定义行开始,到下一个宏名定义行(如果有)的前一行结束。,下图结出的是一个名为“宏组举例”的宏组,其中包含M1和M2两个宏。,计算机基础与Access数据库程序设计7ppt课件(全),运行调用宏组中的宏的方法是在宏名之前加宏组名前缀,例如,“宏组举例”中定义的两个宏的调用方法如下:,宏组举例.M1,宏组举例.M2,5.AutoExec自动执行宏,可以建立一个宏名为AutoExec(字母大小写不限)的宏,在打开数据库时,将首先打开启动窗体(如果在“启动”对话框中设置了启动窗体),然后会立即执行AutoExec宏。可以不设置启动窗体,而是利用Autoexec宏打开应用程序的初始窗体。一个数据库中只能建立一个Autoexec宏。,计算机基础与Access数据库程序设计7ppt课件(全),6.运行测试宏,在宏设计器窗口活动状态下,选择“运行”“运行”命令或,单击“运行”按钮,即可运行当前正在设计的宏或宏组中的第一个宏。可以单步调试宏,操作步骤如下:,(1)打开或激活宏设计器窗口,假定打开“宏组举例”。,(2)选择“运行”“单步”命令或单击“单步”按钮,切换选中单步(“单步”工具栏按钮反相显示)。,(3)选择“运行”“运行”命令或单击“运行”按钮,即打开“单步执行宏”对话框,单击“单步执行”按钮执行当前操作,然后继续显示下一个操作,单击“停止”按钮终止运行,单击“继续”按钮执行当前操作并继续显示下一个操作。,计算机基础与Access数据库程序设计7ppt课件(全),7.2 VBA程序结构,宏只能实现一些简单的处理功能,对于复杂的处理而言,很难通过宏来加以解决,这就需要利用VBA(Visual Basic for Application)应用程序来解决。,VBA程序是一个符合 VBA语法要求的语句的有限序列,其中的每个语句都有明确的操作功能并能被Access理解和执行。程序中语句序列一般也叫程序代码或代码。,VBA程序一般被分成不同的功能单位,叫做过程。过程可以单独被触发执行。,Access中可以有3类VBA程序:一是对象事件过程,二是独立子过程,三是独立函数过程。,事件过程属于对象的组成部分,它在对象事件发生时被触,计算机基础与Access数据库程序设计7ppt课件(全),发执行一次。独立子过程和独立函数过程只能在模块中定义并可在其他程序代码中直接调用执行。,7.2.1 对象事件过程,在面向对象程序设计中,对象是程序的基本组成单位,程序设计过程就是每一个对象的设计过程。对象包含属性、事件和方法。,属性用于定义对象的特征,每类对象都有许多属性,这些属性又可以分类进行设计,例如,窗体及窗体控件的属性窗口中就把属性分为“格式”、“数据”、“其他”等类别。,方法是对象可以执行的预定义操作,每类对象都有一系列方法可以调用执行,在Access对象设计中,一般不需要用户调用方法,但在设计VBA代码时,则可能需要调用对象方法以实现某种处理操作。,计算机基础与Access数据库程序设计7ppt课件(全),事件是对象可以响应的操作,每类对象都预定义了一系列事件。以命令按钮的“单击”事件为例,运行窗体时如果单击某一命令按钮,就触发了相应按钮的单击事件,这时就会执行为该事件指定的操作,这个操作可以是一个宏,也可以是一个事件过程(VBA过程)。,事件代码以Private Sub开始,以End Sub结束。,编辑对象的某一事件过程的操作方法有两种,第一种操作方法如下:,(1)打开对象的属性窗口,选择“事件”选项卡。,(2)将光标置于指定事件的编辑框,这时,编辑框变为下拉列表,从下拉列表中选择“事件过程”。,计算机基础与Access数据库程序设计7ppt课件(全),(3)单击编辑框右侧的浏览按钮,如左下图所示,即可打开Visual Basic编辑器及事件过程代码编辑窗口,如右下图所示。,第二种操作方法如下:,(1)右击相应控件,从弹出的快捷菜单中选择“事件生成器”命令。如果已经生成过事件代码则会打开事件代码编辑窗口;,计算机基础与Access数据库程序设计7ppt课件(全),如果尚未生成事件代码,系统会打开“选择生成器”对话框,如图所示。,(2)单击选中对话框列表中“代码生成器”,单击“确定”按钮,即可打开Visual Basic编辑器及事件过程代码编辑窗口。,(3)在代码编辑窗口中可以通过对象选择下拉列表选择合适的对象,通过事件下拉列表选择待编辑代码的事件。,计算机基础与Access数据库程序设计7ppt课件(全),打开事件代码编辑窗口并确认对象及事件无误后,就可以输入对应的程序代码,输入完成后,关闭窗口即可。,对象事件过程是包含在对象之内的,是对象的组成部分。如果希望程序代码可以独立存在并为多个对象所使用,就需要设计独立模块和独立过程。,7.2.2 模块与独立过程,独立过程包括独立子过程和独立函数过程,均保存在模块对象中。一个模块可以保存多个独立子过程和独立函数过程。,1.模块,模块分为标准模块(简称模块)和类模块两种,本书不介,计算机基础与Access数据库程序设计7ppt课件(全),绍类模块。模块(标准模块,下同)是VBA过程、声明、语句的集合,这些过程、声明、语句作为一个模块对象存储在一起。,模块的首部是选项设置及变量说明区,在此区域可以设置模块参数和定义模块变量、符号常量。,在选项设置及变量说明区之后是过程代码区,在此区域可以定义一个或多个独立子过程或独立函数过程。,过程之间不能有任何其他语句存在。,要设计VBA模块,首先要进入VBA开发环境,即VB编辑器。打开VB编辑器的方法有以下几种:,选择“工具”“宏”“,Visual Basic,编辑器”命令或按,Alt+F11,计算机基础与Access数据库程序设计7ppt课件(全),键,均可打开Visual Basic编辑器,如图所示。,右击数据库操作界面并在弹出的快捷菜单中选择“,Visual Basic,编辑器”命令同样可以打开,Visual Basic,编辑器。,选择“插入”“模块”命令,或选择数据库操作界面中“模块”,然后单击“新建”工具栏按钮,可以在打开,Visual Basic,编,计算机基础与Access数据库程序设计7ppt课件(全),辑器的同时打开新建模块代码编辑窗口,如图所示。,选择数据库操作界面中的“模块”对象,双击已有的模块或单击选中已有模块,然后单击“设计”工具栏按钮,均可在打开,Visual Basic,编辑器的同时打开相应模块代码编辑窗口。,在,Visual Basic,编辑器中可以同时打开多个模块代码设计,计算机基础与Access数据库程序设计7ppt课件(全),窗口。常用的编辑器操作如下:,选择编辑器“插入”“模块”命令或选择编辑器“插入模块”按钮,可以插入一个新模块并打开相应的代码编辑窗口。,选择编辑器“插入”“过程”命令或选择编辑器“插入过程”按钮,系统先打开一个“添加过程”对话框,如图所示。,输入过程名称并选择过程类型及其作用范围,然后单击“确定”按钮,即在当前活动的模块代码编辑窗口中插入一个新的过程框架。,计算机基础与Access数据库程序设计7ppt课件(全),选择“文件”“保存”命令或单击“保存”按钮,可以保存所有模块。,可以关闭任一模块代码编辑窗口,这时并不保存模块代码。,可以在模块中定义独立子过程和独立函数过程。,2.,独立子过程,独立子过程可以完成某种处理请求,执行完成后,返回到调用语句的下一条语句继续执行。依据过程的作用范围不同,独立子过程可以分为公共过程和私有过程两种。公共的独立子过程框架形如:,Public Sub,qqq,(),End Sub,计算机基础与Access数据库程序设计7ppt课件(全),私有的独立子过程框架形如:,Private Sub www(),End Sub,qqq,、,www,为过程名,实际定义过程时过程名会有所变化。一个模块中的过程名不能重复。在框架的首尾语句行之间添加自己的设计代码即可。,独立子过程调用是在代码中直接把子过程名作为程序行即可。例如,调用www子过程只须把www作为一条语句即可。有参数的过程定义及其调用将在节介绍。,3.独立函数过程,独立函数过程可以完成特定的计算处理并把计算结果返,计算机基础与Access数据库程序设计7ppt课件(全),回给调用程序。独立函数过程同样可以分为公共过程和私有过程两种,公共函数过程框架形如:,Public Function eee(),End Function,私有函数过程框架形如:,Private Function fff(),End Sub,与子过程一样,eee、fff为过程名且不能与模块内的其他过程名重复。在框架的首尾语句行之间添加自己的设计代码即可。,计算机基础与Access数据库程序设计7ppt课件(全),独立函数过程可以在表达式中调用,调用形式是函数名后加括号。有参数的函数过程定义及其调用将在节介绍。,4.运行测试独立子过程,可以运行测试独立子过程。将光标置于待运行子过程语句行,然后选择“运行”“运行子过程/用户窗体”命令或单击“运行子过程/用户窗体”按钮,即可运行相应的子过程。,7.3 VBA程序中的运算量、函数、语句,无论是事件过程还是独立过程都需要设计者编写实际的程序代码以完成预定要求。程序是语句的有限序列,语句又是如何构成的呢?语句中一般包含语句定义符,表达式等,表达式中的运算量可以是常量、变量、对象属性、函数等。,计算机基础与Access数据库程序设计7ppt课件(全),在前面的章节中已经介绍了数据类型、常量、表达式等概念,本节不再重复介绍。,7.3.1 常量、变量说明与变量、对象属性赋值,常量一般有两种形式,一种形式就是使用常量本身,另一种形式是使用符号常量。符号常量需要先定义、后使用。,变量是在程序中定义的,在程序运行期间取值可以被改变的运算量。和符号常量一样,变量也需要先定义、后使用。,符号常量和变量都有确定的数据类型,定义时既需要指定是什么,也要指定数据类型。一般把定义常量/变量叫做常量/变量说明,相应的语句叫做常量/变量说明语句。,计算机基础与Access数据库程序设计7ppt课件(全),1.常量、变量说明,符号常量说明语句的语法格式如下:,Public|Private Const As=,As=,变量说明语句的语法格式如下:,Dim|Public|Private As,As ,Public、Private说明符只能用在模块首部的说明语句中,不能在过程内部使用。Dim既可以在模块首部使用,也可以在过程中使用。,在模块首部选项设置及变量说明区用Private或Dim说明,计算机基础与Access数据库程序设计7ppt课件(全),的变量属于私有变量,可以在整个模块内使用,简称模块变量。如果希望某些模块变量可以在其他模块中使用,把Private或Dim换成Public即可,用Public说明的变量一般也叫全局变量。在过程内部说明的变量只能在该过程内部使用,一般叫做局部变量。,Private、Public说明常量的作用范围与说明变量相同。,常量名、变量名命名规则如下:,第一个字符必须是英文字母或汉字。,不能在名称中使用算术运算符,(+,,,-,,*,,/,,,,,),及空格、句点,(,.,),、惊叹号,(,!,),、或,、,&,、,$,,,#,等字符。,名称的长度不能超过,255,个字符,一般以,10,个字符以内为宜。,计算机基础与Access数据库程序设计7ppt课件(全),名称不能与,VBA,语句定义关键字,(,如,Sub,、,Dim,、,Function,等,),相同,同一过程内的名称不能相同。,常量、变量说明中的数据类型定义符一般是一个英文单词(如表7-2所示,定长字符串须带一个整数参数)。,Boolean逻辑型,String变长字符串型,String*定长字符串型,Date日期型,Currency货币型,Byte字节型,Integer整型,计算机基础与Access数据库程序设计7ppt课件(全),Long长整型,Single单精度型,Double双精度型,Variant变体型,常量说明有以下3种可能的形式(以单常量说明为例):,(1)Public Const As=,说明全局常量。,(2)Private Const As=,说明私有常量。,(3)Const As=,说明私有常量。,计算机基础与Access数据库程序设计7ppt课件(全),【例7-2】下列常量说明是否合法。,(1)Public Const qqq As Integer=200,(2)Const A1 As Double=2.234,(3)Private Const A2#As Long=3456,(4)Const ty As booLeaN=False,(5)Const sc As String*4=123456789,【解答】,(1)说明一个整型公共常量qqq,其取值为200。,(2)说明一个私有双精度型常量A1,其取值为2.234。,(3)说明不合法,常量名包含非法字符#号。,计算机基础与Access数据库程序设计7ppt课件(全),(4)说明一个私有逻辑型变量ty,其初值为False。关键字输入时大小写无关,本题booLeaN是正确的。,(5)说明一个定长字符串常量sc,其值为字符串1234。虽然字符串初值为123456789,但因是定长字符串,所以只取其前4个字符。,在VBA代码中可以使用一些预定义常量,这些常量由系统定义且均以vb开头。程序中可以直接使用这些常量(常数)。,除了符号常量之外,还可以直接在表达式中使用常数,为区别这些常数的准确数据类型,一般在常数后面加类型说明符后缀。例如,1234表示货币常数1234,45.56#表示双精度常数45.56。,计算机基础与Access数据库程序设计7ppt课件(全),变量说明有以下几种基本形式(以单变量说明为例):,(1)Dim As,说明指定类型的私有变量或局部变量。,(2)Public As,说明指定类型的公共变量。,(3)Private As,说明指定类型的私有变量。,(4)Dim,说明Variant型私有变量或局部变量。,(5)Public,说明Variant型公共变量。,(6)Private,说明Variant型私有变量。,使用(4)(6)格式说明时,变量名之后可以加类型说明符。,计算机基础与Access数据库程序设计7ppt课件(全),加类型说明符时表示说明指定类型的变量(使用变量时可以带或不带类型说明符),不加类型说明符时表示说明一个Variant类型的变量。Variant类型的变量可以赋任何类型的值。,【例7-3】分析下列变量说明。,(1)Dim ss#,(2)Public www As Long,(3)Private qqq,eee As String,(4)Dim tt,(5)pUbliC u1 As Double,(6)Private y-1 As Variant,(7)Dim a1 As date,计算机基础与Access数据库程序设计7ppt课件(全),(8)Dim ts As String*20,【解答】,(1)说明一个私有或局部双精度型变量ss,(使用时用ss或ss#表示均可)。,(2)说明一个长整型公共变量www。,(3)说明两个私有变量。第一个变量qqq没有类型说明,是Variant型的,第二个变量eee为字符串型的。,(4)说明一个私有或局部变量tt,因tt没有类型说明符,因此是Variant型的。,(5)Public符合语法要求,说明一个双精度型公共变量u1。,(6)变量名中包含减号,不合语法要求,说明无效。,计算机基础与Access数据库程序设计7ppt课件(全),(7)date符合语法要求,说明一个私有或局部日期/时间型变量a1。,(8)说明一个长度为20的定长字符串变量。,变量也可以不说明,而是通过赋值语句自动建立。这是一种不规范的变量使用方法,建议不要使用。,2.数组说明,数组是同类型变量的有序集合,其中的每个变量都叫做数组元素。数组元素之间通过下标加以区分,下标一般是一个大于或等于0的连续整型数字,相当于数组元素在数组中的位置序号。数组必须先说明,后使用。,计算机基础与Access数据库程序设计7ppt课件(全),有两种数组说明方法,相应说明语句的典型语法格式如下:,Dim|Public|Private(,)As,Dim|Public|Private(To,To)As,Dim、Public、Private作用同前。数组名是数组的标识,其命名规则与变量名相同。第一种说明方法只给出下标上界,下标下界通过Option Base语句指定,其语法格式为:,Option Base 0|1,Option Base语句只能在模块首部选项设置及变量说明区中使用一次,用于设置模块内所有数组说明中未说明的数组下标下界。Option Base 0表示下标下界为0,Option Base 1表示,计算机基础与Access数据库程序设计7ppt课件(全),下标下界为1。只有一个下标时,相应的数组是一维数组,有两个下标的数组是二维数组。,第二种说明方法指定每一个下标的下界和上界,与Option Base设置无关。,习惯上把第一个下标称为行,第二个下标称为列。,【例7-4】分析下面程序段中说明的数组情况(假定模块首部执行了Option Base 0)。,Dim AA(20,12)As Integer,BB(2)As Long,Public CC(1 To 2,5 To 6)As Byte,【解答】AA数组是一个二维整型数组,有21行、13列,共有273个数组元素:AA(0,0),AA(0,1),AA(20,11),AA(20,12)。,计算机基础与Access数据库程序设计7ppt课件(全),BB数组是一个一维长整型数组,共有3个数组元素:BB(0),BB(1),BB(2)。,CC数组是一个二维字节型数组,有二行、二列,共有4个数组元素:CC(1,5),CC(1,6),CC(2,5),CC(2,6)。,3.变量赋值,赋值语句用于对变量(包括数组元素)赋值,其语法格式如下:,=,赋值语句首先求解表达式并将计算结果值赋给指定的变量。赋值语句中表达式的类型应与变量的类型一致,否则可能导致语法错误或数据错误。表达式中出现的所有变量必须已经说明和赋值,否则可能产生错误。,计算机基础与Access数据库程序设计7ppt课件(全),赋值语句中的变量一般应该在赋值语句之前已经说明。如果变量尚未说明,则会依据表达式类型自动建立一个对应类型的私有变量。规范的做法是先说明变量,之后再给该变量赋值。,变量可以多次被赋值,变量的当前值是最近一次赋值的结果。,4.对象引用与对象属性赋值,可以在VBA代码中操作Access对象,例如,窗体、报表等对象及其控件均可通过VBA操作。,引用窗体及窗体控件的常用方法如下:,Forms!,,例如,,Forms!MyForm!Text1,表示引用,MyForm,窗体上控件,Text1,的值,(,当前输入,/,显示的,Value,属性值,),。,计算机基础与Access数据库程序设计7ppt课件(全),对象名,(,窗体名、控件名,),加方括号,例如,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数据库程序设计7ppt课件(全),对象名,(,窗体名、控件名,),加方括号,例如,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数据库程序设计7ppt课件(全),时,可以采取下列更为简单的方式:,Me!.,,例如,,Me!Text1.Locked,表示引用当前窗体上控件,Text1,的,Locked,属性。,.,,例如,,Text1.Locked,表示引用当前窗体上控件,Text1,的,Locked,属性。,控件名加方括号,例如,Text1.Locked,也可以表示为,Text1.Locked,。,窗体、报表、控件属性在,VBA,代码中引用时必须使用其原始属性名,不能用属性的中文名称。常用属性的原始属性名如表,7-3,所示,应熟记其中的属性名。,计算机基础与Access数据库程序设计7ppt课件(全),5.窗体/报表节对象引用,可以引用窗体节对象以设置窗体节属性。窗体节属性的引用方式如下:,Forms!.Section(,索引值,),。,索引值可以使用数值或符号常量,,0(acDetail),表示主体节,,1(acHeader),表示窗体,/,报表页眉节,,2(acFooter),表示窗体,/,报表页脚节,,3(acPageHeader),表示窗体,/,报表页面页眉节,,4(acPageFooter),表示窗体,/,报表页面页脚节。,当前窗体,/,报表可以使用,Me,指代。,7.3.2,内部函数,内部函数是,VB,预定义的函数,可以在表达式中直接调用。常用的内部函数已在,节表,4-2,、表,4-3,中介绍过了,另外,,计算机基础与Access数据库程序设计7ppt课件(全),有两个重要的函数需要特别说明,一个是输入函数InputBox,另一个是输出函数MsgBox。,InputBox函数用于返回输入的字符串数据,其典型语法格式如下:,InputBox(,),InputBox函数显示一个对话框,“标题”字符串为对话框标题,“提示”字符串为对话框内显示的提示信息,对话框中显示一个输入编辑框用于接收输入的字符串,“默认值”字符串为输入框中预置的输入内容,x,y坐标分别用于指定对话框左边界距屏幕左边沿的距离和对话框上边界距屏幕上边沿的距离,坐标计量单位为VB计量单位。省略x,y坐标时将居中显示对话框。例如,下列语句执行时将居中显示如下页图所示的对话,计算机基础与Access数据库程序设计7ppt课件(全),框,输入数据并单击“确定”按钮后,关闭对话框并把输入的字符串返回,然后赋给变量sss。,sss=InputBox(请输入一个数字:,输入数据,1),InputBox函数只能输入字符串数据,如果要输入其他类型的数据,需要用类型转换函数进行类型转换。例如,假定aaa为整型变量,需要用Val函数把InputBox函数输入结果转,计算机基础与Access数据库程序设计7ppt课件(全),换为数值型数据才能赋给aaa:,aaa=Val(InputBox(请输入一个数字:,输入数据,1),MsgBox函数用于显示一个提示信息框并返回用户响应结果,其典型语法格式如下:,MsgBox(,),“提示信息”字符串为对话框显示的信息。“标题”字符串指定对话框标题。“按钮设置值”为一整数,用于设置对话框显示按钮、图标等参数,该值由按钮类型与数目、图标样式、缺省设置、模式参数等四类数据中各取一个(或0个)相加得到。如表7-4所示为4类参数值说明。,用户响应对话框操作并关闭对话框后,函数返回用户单击的按钮参数,如表7-5所示。,计算机基础与Access数据库程序设计7ppt课件(全),在使用按钮设置值参数时,可以使用表达式依次把各设置参数相加,这样既简单又直观,例如,下列语句:,ww=MsgBox(请选择操作按钮,3+64+256+0),语句中3表示显示“是”、“否”、“取消”按钮,64表示显示蓝色信息符号图标,256表示第二个按钮(“否”按钮)为默认按钮,0表示对话框挂起应用程序直至对话框关闭。执行时显示的对话框如图所示。,单击按钮关闭对话框后,返回值被赋给ww变量,根据该变量的值即可知道用户单击的是哪个按钮。,计算机基础与Access数据库程序设计7ppt课件(全),7.3.3 常用语句及对象,程序是语句的有限序列,语句是一行一行依次排列的,一般每行一个语句。可以在一行输入多条语句,这时各语句之间要用英文冒号(:)分隔开来。当语句行较长时,可以多行书写,除最后一行外,前面各行末尾需要使用下划线(_)续行符(续行符之前至少要留一个空格,不能与语句内容连着书写)。不能在表达式或对象名中间位置续行。,程序中的常用语句可以分为如下几类:,注释语句。,说明语句。如变量说明、数组说明、选项说明等。,变量赋值语句。,流程控制语句。,计算机基础与Access数据库程序设计7ppt课件(全),输入输出语句。,DoCmd,对象及其他对象方法调用。,1.,注释,注释语句用于在程序中添加注释说明。注释语句并不影响程序的运行,但对程序设计及维护却非常重要,程序中应有适当的注释说明。注释语句有两种基本形式,一种是用,Rem,引导注释文本,另一种是用英文单引号引导注释文本。用,Rem,引导注释时,,Rem,与注释文本之间至少要留一个空格,使用单引号无此限制。用,Rem,引导的注释是一个独立的语句,不能添加在其他语句之后,用单引号引导的注释既可以单独作为一个注释语句,也可以添加到其他语句行的末尾。,续行符之后不能添加用单引号引导的注释。,计算机基础与Access数据库程序设计7ppt课件(全),【例7-5】分析下列程序段中的语句(假定模块首部执行了Option Base 1)。,Rem 说明变量及数组,Dim sss As String 说明变量sss,多语句行,各语句之间用冒号分隔,Dim aa(2,2)As Long:Dim qq 说明数组、变量,【解答】本段程序包含4个语句行。第一行是一个注释语句;第二行是一个变量说明语句,语句末尾有单引号引导的注释说明;第三行是一条用单引号引导的注释语句;第四行是一个多语句行,第一条语句说明一个2行2列的长整型数组aa,第二条语句说明一个货币型变量qq,语句行末尾为单引号引导的注释。,2.说明语句,常量、变量说明语句和变量赋值语句前面已经介绍过,不,计算机基础与Access数据库程序设计7ppt课件(全),再赘述。说明语句一般放在程序的首部,变量赋值语句用于实现程序的运算处理。,前面介绍了数组下标选项说明语句Option Base语句,还有另一个十分重要的选项说明语句Option Compare,其语法格式如下:,Option Compare Binary|Text|Database,Option Compare语句用于设置字符串比较方法,和Option Base一样只能在模块首部使用,其作用范围是整个模块。,Option Compare Binary设置的比较方式是对字符二进制编码进行比较,区分字母大小写。,Option Compare Text设置的比较方式按字符比较,不区分字母大小写。,计算机基础与Access数据库程序设计7ppt课件(全),Option Compare Database设置则依据Access选项设置进行字符串比较。,3.输入输出,可以用 InputBox函数实现数据输入,也可以用窗体控件实现数据输入。可以用MsgBox函数实现数据输出,也可以用窗体控件或Debug对象实现数据输出。Debug对象的Print方法可以在立即窗口输出结果,Debug对象的Print方法语法格式如下:,Debug.Print,语句执行时依次输出表达式列表中的每个表达式的值
展开阅读全文