模块和VBA程序设计.ppt

上传人:牧羊曲112 文档编号:5992388 上传时间:2023-09-12 格式:PPT 页数:100 大小:957.50KB
返回 下载 相关 举报
模块和VBA程序设计.ppt_第1页
第1页 / 共100页
模块和VBA程序设计.ppt_第2页
第2页 / 共100页
模块和VBA程序设计.ppt_第3页
第3页 / 共100页
模块和VBA程序设计.ppt_第4页
第4页 / 共100页
模块和VBA程序设计.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《模块和VBA程序设计.ppt》由会员分享,可在线阅读,更多相关《模块和VBA程序设计.ppt(100页珍藏版)》请在三一办公上搜索。

1、第8章 模块和VBA程序设计,第8章 模块和VBA程序设计,VBA程序设计基础,模块的概念,常用标准函数,VBA的程序结构,VBA的数据库编程,过程调用和参数传递,8.1认识模块,模块的基本概念 1.模块的分类 在Access中,模块分为类模块和标准模块两种类型。(1)类模块 类模块包括窗体模块和报表模块,它们与各自的 窗体 或报表相关联。窗体模块中的事件过程的代码用于响应窗体或窗体 上控件的触发事件。报表模块中的事件过程的代码用于 响应报表或报表上控件的触发事件。,8.1认识模块,模块的基本概念 1.模块的分类(2)标准模块 标准模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位

2、置运行的经常使用的过程。标准模块和某个特定对象无关的类模块的主要区别在于其范围和生命周期。,8.1认识模块,模块的基本概念 2事件过程 事件过程是专为特定事件编写的一组代码,被窗体或报表的特定事件调用,实现特定的操作,并对用户的操作做出响应。例如,单击命令按钮,改变标签的标题。事件过程只能在类模块中定义。当窗体或报表的第一个事件过程创建后,系统会自动创建与之关联的窗体模块或报表模块,通过特定事件激发事件过程执行。所以,过程与类模块密不可分。3通用过程 通用过程是与特定事件无关的一组代码,能被多个同类型或不同类型的事件调用。类模块和标准模块中都可以定义通用过程 4使用模块的几种情况,8.1认识模

3、块,模块的基本概念 5建立第一个类模块 类模块与窗体或报表关联,以窗体模块为例建立类模块的方法有3种,方法2:在窗体设计视图中选定控件,单击标准工具栏“生成器”按钮,在“选择生成器”对话框中选择“代码生成器”。,方法1:在窗体设计视图中选定窗体控件,单击属性窗口“事件”选项卡,选定某个事件,单击单元格右边的“生成器”按钮,在“选择生成器”对话框中选择“代码生成器”,单击“确定”按钮。,方法3:在窗体设计视图中选定控件,单击鼠标右键,从快捷菜单中选择“事件生成器”,在“选择生成器”对话框中选择“代码生成器”。,8.1认识模块,模块的基本概念 5建立第一个类模块,例8.1 建立第一个类模块,创建如

4、图8-2所示窗体,单击按钮时,显示“欢迎使用Access!”,例8.1 建立第一个类模块,单击按钮时显示“欢迎使用Access!”,操作步骤:(1)在数据库中,创建窗体,设置窗体属性,使“记录选择器钮”、“导航按钮”、“分隔线”均不显示。,(2)选择命令按钮控件,单击鼠标右键,从快捷菜单中选择“事件生成器”,在“选择生成器”对话框中选择“代码生成器”。(3)在事件过程中输入代码,,(4)转到窗体视图,单击“开始”按钮。,8.1认识模块,模块的基本概念 6建立第一个标准模块,(1)建立标准模块的方法选择数据库窗口“模块”对象,单击“新建”按钮,新建标准模块。(2)打开标准模块方法方法1:在数据库

5、窗口单击一个标准模块,单击“设计”按钮,打开该模块。方法2:在数据库窗口双击一个标准模块,打开该模块。方法3:在数据库窗口单击一个标准模块,选择“工具/宏/Visual Basic 编辑器”命令,打开该模块。,8.1认识模块,模块的基本概念 6建立第一个标准模块,操作步骤:(1)在数据库中,选择“模块”对象,单击“新建”按钮。(2)输入代码。,例8-2 建立第一个标准模块,运行时显示“欢迎使用Access!”,(3)单击“保存”按钮,为模块起名:Frist(4)选择“运行/运行子程序”命令,数据库窗口显示相应信息。,8.1认识模块,模块设计环境,8.1认识模块,模块设计环境,8.2 VBA编程

6、基本概念和步骤,基本概念,在面向对象的程序设计中,基本概念包括对象、类、属性、事件、方法等。1对象 在自然界中,一个对象就是一个实体,如一个人就是一个对象。面向对象程序设计的主要任务是以“对象”为中心设计模块。Access中的对象代表应用程序中的元素,如表,窗体、按钮等。2类 类是某种类型对象的原型,类本身不是一个对象,为了实际使用相应对象,需要对相关的类进行实例化。实际上,位于Access数据库窗口左边的7个对象:表、查询、窗体、报表、页、宏、模块,应该准确地称为7个对象类,通过每一个类可以创建多个该类型的对象,应用程序是由这些对象构成的。,8.2 VBA编程基本概念和步骤,基本概念,3.属

7、性 属性描述了对象的性质 例如,文本框控件对象中的名称、字体的相关属性等。引用方式为:对象.属性 例如:Label6.Caption=area(x)例如:Text1.Forecolor=VbRed 将Text1文本框的前景色设置为红色。MsgBox Me.Caption 显示当前窗体的标题。每个对象都有自己的属性,对象的类别不同,属性也会不同。同一类型的不同对象,属性也会有差异。,8.2 VBA编程基本概念和步骤,基本概念,4事件 事件是对象能够识别的动作。如单击命令按钮,打开窗体,其中的“单击”事件是命令按钮能识别的动作。响应事件的方式有以下2种。(1)用宏对象响应对象的事件。(2)给事件编

8、写VBA代码,用事件过程响应对象的事件。,如 Private Sub Command1_Click().End sub其中,Command1是对象名,Click是事件名。,8.2 VBA编程基本概念和步骤,基本概念,5方法方法描述了对象的行为,即在某个对象上执行的一个过程,例如,打开和关闭报表对象。引用方式为:对象.方法 例如:Text1.SetFocus,事件,方法,属性,1.关鍵字MeMe是“包含这段代码的对象”的简称,可以代表当前对象。在类模块中,Me代表当前窗体或当前报表。例如:Me.Label1.Caption=学生信息表“定义窗体中标签Label1的Caption属性。(2)Me.

9、Caption=学生信息一览表“定义窗体本身的Caption属性。,8.2.2 用代码设置窗体属性和事件,8.2 VBA编程基本概念和步骤,2用代码设窗体置性 能用代码设置的窗体属性主要包括窗体标题、窗体数据源、背景图片等。,8.2.2 用代码设置窗体属性和事件,8.2 VBA编程基本概念和步骤,例8-3 创建窗体,并在窗体中建立文本框txtXm和命令按钮cmdStart,单击命令按钮时,窗体中插入一图片,并在文本框中显示“学生信息表”中的第一条记录的姓名。,2用代码设窗体置性,8.2.2 用代码设置窗体属性和事件,8.2 VBA编程基本概念和步骤,操作步骤:(1)创建窗体,建立文本框,并将其

10、“名称”属性改为txtXm;创建命令按钮,将其“名称”属性改为cmdStart,“标题”属性改为“开始”。(2)编写窗体的Load事件和Click事件(3)转到窗体视图,单击命令按钮“开始”,,8.2.3 编程步骤,8.2 VBA编程基本概念和步骤,VBA编程有以下几个主要步骤。1创建用户界面 2设置对象属性 3对象事件过程的编写 4运行和调试 5保存窗体,8.2.4 DoCmd对象,8.2 VBA编程基本概念和步骤,使用DoCmd调用方法的格式如下:DoCmd.方法名 参数例如:DoCmd.OpenForm”学生信息”DoCmd.OpenTable 课程信息 DoCmd.RunMacro M

11、acro1,8.3.1 VBA的基本数据类型,8.3 VBA编程基础,(2).长整形 Long 类型申明符为“&”,(1)整型 integer 类型申明符为“%”,表示范围:-32768+32767 例:8%-21+5%5,(3).单精度数 Single 类型申明符为“!(E)”,最多有7位有效数字,表示范围:-3.402823E+38(1038)+3.402823E+38 例:-3.4!1.0E+2(1.0 102),表示范围:-2147483648+2147483647 例如:32768-21&,8.3.1 VBA的基本数据类型,8.3 VBA编程基础,(4).双精度数 Double类型申

12、明符为“#(D)”,最多有15位有效数字,,(5).字符型数据 string 类型申明符为“$”字符型数据是用双引号括起来的一串ASCII码字符。专门用来存放文字信息的。字符串是放在双引号内的若干个字符,其中长度为0(即不含任何字符)的字符串称为空字符串。例:This a book,(6).逻辑型 Boolean 逻辑型数据只有真和假两种值,长度固定为1个字符。,(7).日期时间型 Date 日期时间型(Date Time)数据是描述日期和时间的数据,长度固定为8个字符。日期时间型数据除包括日期数据的年、月、日外,还包括时、分、秒以及上午、下午等内容。,(8).货币型(Currency)类型申

13、明符为 货币数据为表示钱款而设置的。,(9)变体形(Variant)变体形是指所有未定义的变量默认的数据类型,是一种可变的数据类型,可以表示任何值,8.3 VBA编程基础,8.3.1 VBA的基本数据类型,常量,8.3 VBA编程基础,常量指在程序运行过程中其值保持不变的量。常量有两种:直接常量和符号常量。1直接常量 取值直接反映了其类型;例如:abcd,3452符号常量 定义符号常量,用来代替数值或字符串,提高代码的可读性,便于维护。一般格式为:Const 常量名=表达式,常量名=表达式.例如:Const PI=3.1415926 程序运行中凡是遇到3.1415926,均可用PI代替。,常量

14、,8.3 VBA编程基础,3固有常量 这种类型的常量,已经预先在类库中定义好了。固有常量以两个前缀字母指明了定义该常量的对象库。来自Visual Basic类库的常量以VB开头,如vbRed;来Access类库的常量以ac开头,如acForm。4系统定义常量 系统定义的常量有True、False和Null。,8.3.3 变量,8.3 VBA编程基础,变量是指程序运行时值会发生变化的数据。在程序运行时数据是在内存中存放的,内存中的位置是用不同的名字表示的,这个名字就是变量的名称,该内存位置上的数据就是该变量的值。,8.3.3 变量,8.3 VBA编程基础,1变量命名规则(1)以字母开始,可以包括

15、数字、字母和下划线;不能多于255个字符;(2)不能与关键字重复(如End、Printe、Sub等);(3)在同一作用域中,变量名不能重复。,8.3.3 变量,8.3 VBA编程基础,2变量的类型和定义 使用变量前,一般必须声明变量名和变量类型,使系统分配相应的内存间,并确定该空间可存储的数据类型。(1)用类型说明符来标识 把类型说明符放在变量名的尾部,可以标识不同的变量类型。其中%表示整型,&表示长整型,!表示单精度型,#表示双精度型,表示货币型,$表示字符串型。例如:Total%Amount#Lzlame$,8.3.3 变量,8.3 VBA编程基础,2变量的类型和定义(2)在定义变量时指定

16、其类型 可以用下面的格式定义变量:Dim 变量名 As 类型 例如:Dim Cj As Integer,Total As Double,8.3.4 表达式,8.3 VBA编程基础,表达式是将常量、变量、字段名、控件属性值和函数用运算符组成的式子,完成各种形式的运算和处理。,1算术表达式算术运算符与操作数组合的式子称为算术表达式。,8.3.4 表达式,8.3 VBA编程基础,2字符串表达式字符串连接运算符是把两个字符串首尾连接成一个字符串。,8.3 VBA编程基础,8.3.4 表达式,3关系表达式关系运算符用来对两个值进行比较,比较的结果是一个逻辑值。如果关系成立,则结果True,否则结果为Fa

17、lse。,8.3 VBA编程基础,8.3.4 表达式,4.逻辑运算符逻辑运算也称布尔运算。用逻辑运算符连接两个或多个关系式,组成一个布尔表达式。其结果为逻辑值True或False。,8.3 VBA编程基础,8.3.4 表达式,5运算符的优先级 在表达式中,当运算符不止一种时,要先进行算术运算,接着进行比较运算,最后才是逻辑运算。所有比较运算符的优先顺序都相同;逻辑运算符中先算Not运算,再算And运算,然后是Or运算。可以用小括号“()”改变表达式中运算的优先顺序,强制表达式中的某些部分优先进行计算。括号内的运算总是优先于括号外的运算。在括号之内,运算符的优先顺序不变。,8.3 VBA编程基础

18、,8.3.5 内部函数 在VBA中提供了近百个内置的标准函数,用户可以直接调用标准函数来完成许多操作。标准函数的调用形式如下:函数名(参数表列),1数学函数,8.3 VBA编程基础,8.3.5 内部函数,3日期和时间函数,8.3 VBA编程基础,8.3.5 内部函数,3日期和时间函数,8.4 VBA程序的流程控制结构,8.4.1 VBA常用语句,1语句的书写规则(1)将单行语句分成多行 当一个语句过长,可以采用断行的方式,用续行符(一个空格后面跟一个下划线)将长语句分成多行。(2)将多个语句合并到同一行上 VBA允许将两个或多个语句放在同一行,要用冒号“:”将它们分开。例如,X=100:Y=h

19、ello 为了便于阅读代码,最好还是一行放一个语句。(3)在语句代码中添加注释 为了增加程序的可读性,在程序中可以添加适当的注释。注释方式有两种“Rem”和“”。,8.4 VBA程序的流程控制结构,8.4.1 VBA常用语句,2赋值语句赋值语句用来为变量指定一个值。格式如下:=例如:x=5s=3.14*x 2y=Int(s)x=yx=x+1label0.caption=“总成绩”如果变量未被赋值而直接引用,则数值型变量的值为0,字符型变量的值为空串,逻辑型变量的值为False。,8.4 VBA程序的流程控制结构,8.4.1 VBA常用语句,输入框函数用于在一个对话框中显示提示,等待用户输入正文

20、并按下按钮,然后返回包含文本框内容的数据信息。函数格式:InputBox(Prompt,Titlel(,Default,Xpos,Ypos,Helpfile,Context),3输入框函数,例:Private Sub Command1_Click()q1=InputBox(“请输入您的身份证号”,“输入身份证号”,“19781201”)msgbox“你的身份证号是:”&q1End Sub,提示,缺省,标题,提示,标题,8.4 VBA程序的流程控制结构,8.4.1 VBA常用语句,4.MsgBox函数和MsgBox语句。MsgBox使用消息框输出信息。消息框由标题栏信息、提示信息,一个图标和一个

21、或多个命令按钮4个部分组成,图标的形式及命令按钮的个数可以由用户设置。MsgBox函数的格式如下:变量名=MsgBox(提示,按钮,标题)MsgBox语句的格式如下:MsgBox(提示,按钮,标题),8.4 VBA程序的流程控制结构,顺序结构,计算机程序的执行控制流程有三种基本结构:顺序结构、分支结构和循环结构。面向过程的程序设计中,程序不论从宏观到微观,都是由这三种结构组成。面向对象程序设计增加了事件驱动机制,由用户触发某事件去执行相应的事件过程。这些事件处理过程之间并不形成特定的执行次序,但对每一个事件过程内部而言,又包含这三种基本结构。,8.4 VBA程序的流程控制结构,顺序结构,顺序结

22、构是简单的一种结构,计算机按照语句的排列顺序依次执行每一条语句。,例8-5:计算鸡兔同笼,分析:h代表头,F代表脚,c代表鸡.R代表兔子 R+C=H 2C+4R=F 2-得:R=(F-2H)/2C=H-R,8.4 VBA程序的流程控制结构,顺序结构,例8-5:计算鸡兔同笼,Private Sub Command8_Click()Dim h%,f%,c!,r!h=Text0 f=Text2 r=(f-2*h)/2 c=h-r Text4=c Text6=r End Sub,8.4 VBA程序的流程控制结构,选择结构可以根据条件表达式的值来选择程序运行的分支语句,主要有以下一些结构:,8.4.3

23、选择结构,1.单分支If语句格式:格式1:If 条件 Then 语句序列格式2:If 条件表达式 Then 语句序列 End If 当程序执行到这种格式的If语句时,如果条件表达式为真,将执行Then后面的语句序列,如果条件表达式为假,程序将跳过语句序列而直接执行End If后面的语句。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,1.单分支If语句,例如:Sub Panduan()Dim x As Integer x=InputBox(请输入X的值)If x 0 Then MsgBox 这是一个正数 End IfEnd Sub运行模块时,当输入的值大于零时,弹出消息框提示为“这是

24、一个正数”。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,2双分支格式:If Then Else End If执行过程:判断条件,如果为真,执行语句序列1;如果为假,执行语句序列2。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,2双分支,例8-6 输入一个成绩,给出“及格”或“不及格”的信息提示。选择“模块”对象,单击“新建按钮”。在代码窗口输入以下代码。Sub Cjmark()Dim cj As Integer cj=InputBox(请输入成绩:)If cj=60 Then MsgBox 及格 Else MsgBox 不及格 End IfEnd Sub运行该过程。,

25、8.4 VBA程序的流程控制结构,8.4.3 选择结构,例8-7 完善鸡兔同笼问题,当计算结果为负数或小数时,提醒用户“数据有误”,并重新输入总头数和总脚数。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,3If-Then-ElseIf多分支格式:If 条件l Then 语句序列1ElseIf 条件2 Then 语句序列2Else 语句序列n+1End If,执行过程:依次判断条件,如果找到一个满足的条件,则执行其下面的语句序列,然后跳过End If,执行后面的程序。如果所列的条件都不满足,则执行Else语句后面的语句序列;如果所列出的条件都不满足,又没有Else子句,是直接跳过En

26、d If,不执行后面的任何语句块。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,3If-Then-ElseIf多分支,例8-8 编写程序,将学生的百分制成绩按要求转换成相应的等次输出。成绩在90,100为“优秀”;成绩在80,90)为“良好”;成绩在70,80)为“中等”;成绩在60,70),60分以下的为“不及格”,8.4 VBA程序的流程控制结构,8.4.3 选择结构,3If-Then-ElseIf多分支,例8-8:,8.4 VBA程序的流程控制结构,8.4.3 选择结构,4Select Case 语句(情况语句),格式:Select Case Case Case Case C

27、ase Else End Select,执行过程:首先计算变量或表达式的值,然后依次计算Case子句中表达式的值,如果变量或表达式的值和某个Case表达式的值吻合,则执行相应的语句序列,然后执行End Select下面的语句。当前Case表达式的值不满足,则进行下一个Case语句的判断。如果都不满足,有Case Else部分则执行语句序列n+1,否则执行End Select后面的语句。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,4Select Case 语句(情况语句),Case表达式可以是下列4种格式之一:单一数值,如Case 2。一行并列的数值,数值之间用逗号隔开,如Case

28、 5,6,7 用关键字To分隔开两个数值或表达式之间的范围,如Case 1 to 10 用关键字Is连接关系运算符,如=、=,后面跟变量或具体的值,Is=15。Case语句是依次测试的,并执行第一个符合Case条件的相关的程序代码,即使再有其他符合条件的分支也不会再执行。如果没有找到符合条件的,并且有Case Else语句,就会执行该语句后面的程序代码。,8.4 VBA程序的流程控制结构,8.4.3 选择结构,4Select Case 语句(情况语句),例8-9 将例8-8的程序代码用Select Case情况语句完成,8.4 VBA程序的流程控制结构,8.4.3 选择结构,5IIf()函数格

29、式:IIf(,)IIf函数首先要计算“条件表达式”,当“条件表达式”的值为“真”时,则IIf函数返回的值;否则,返回的值。例如,求x,y中大的数,将其存入MaxNum变量中,可以使用如下语句:MaxNum=IIf(x y,x,y),8.4 VBA程序的流程控制结构,循环结构,在程序设计中,可以使用循环语句在满足条件的前提下重复执行一行或几行程序代码。在VBA中,循环语句有3种:ForNext DoLoop WhileWend,8.4 VBA程序的流程控制结构,循环结构,功能:能够重复执行程序代码区域特定次数。格式:For 循环变量=初值 To 终值 Step步长 循环体 条件语句序列 Exit

30、 For 结束条件语句序列Next 循环变量,1ForNext语句,8.4 VBA程序的流程控制结构,循环结构,1ForNext语句,For语句的执行步骤如下:(1)循环变量取初值。(2)循环变量与终值比较,确定循环是否进行.(3)执行循环体。(4)循环变量值增加步长,即循环变量=循环变量+步长,程序跳转至(2)。,例8-10:使用ForNext语句计算1100之间数的和。Private Sub Command1_Click()Dim i%,sum%For i=l To 100 sum=sum+i Next i Label2.Caption=sumEnd Sub,思考:如何计算1*2*3*n,

31、8.4 VBA程序的流程控制结构,循环结构,2.Do WhileLoop功能:当条件式结果为真时,重复执行循环体。当条件式结果为假或执行到Exit Do时,结束循环。语句格式:Do While 条件式 循环体 条件语句序列 Exit Do 结束条件语句序列Loop,8.4 VBA程序的流程控制结构,循环结构,2.Do WhileLoop,例:用Do WhileLoop语句计算1100之间数的和。Dim i As IntegerDim Sum As Integeri=1Do While i=100 Sum=Sum+ii=i+1Loop,8.4 VBA程序的流程控制结构,循环结构,3.Do Unt

32、il Loop,语句功能:Do UntilLoop循环结构是当条件式值为假时,重复执行循环体。当条件式值为真,结束循环。语句格式:Do Until 条件式 循环体 条件语句序列 Exit Do 结束条件语句序列Loop,8.4 VBA程序的流程控制结构,循环结构,3.Do Until Loop,例8-12输入若干个学生成绩以-l为结束标志,求这些成绩的平均值。单击“模块”对象,添加模块,编写过程代码,运行过程。,8.数组,数组是一组具有相同属性和相同类型的数据,并用统一的名称作为标识的数据类型,这个名称称为数组名,数组中的每个数据称为数组元素,或称为数据元素变量。数组元素在数组中的序号称为下标

33、,数组元素变量由数组名和数组下标组成,例如,A(1)、A(2)、A(3)表示数组A的3个元素。,8.数组,数组在使用之前也要进行定义格式:Dim 数组名(下标下限 to 下标上限,下标下限 to 下标上限)As 数据类型,例:Dim A(10)As IntegerDim B(1 To 10)As IntegerDim c(1 to 3,1 to 5)As Integer,注意:Option Base 1 数组的默认下标下限设置为1 Option Base 0 数组的默认下标下限设置为0,8.5.1 数组的声明,8.数组,8.5.2 数组的使用,例8-13:输入任意10个学生的成绩,输出大于平均

34、成绩的数据。,Private Sub cmdStart_Click()Dim a(10)As Single,S!,av!For I=1 To 10 a(I)=InputBox(请输入第&I&个数)S=S+a(I)txt1=txt1&a(I)Next I av=S/10 For I=1 To 10 If a(I)av Then Txt2=Txt2&a(I)End If Next IEnd Sub,8.数组,8.5.2 数组的使用,例8-13:输入任意10个学生的成绩,输出大于平均成绩的数据。,Private Sub cmdStart_Click()Dim a(10)As Single,S!,av

35、!For I=1 To 10 a(I)=InputBox(请输入第&I&个数)S=S+a(I)txt1=txt1&a(I)Next I av=S/10 For I=1 To 10 If a(I)av Then Txt2=Txt2&a(I)End If Next IEnd Sub,8.6 过程调用与参数传递,一个过程在执行过程中可以调用另外一个过程,同时将参数传递过去。调用完成后,再回到本过程继续执行。过程是一段独立的程序代码,用来执行特定任务,这段代码能被反复调用。模块包括一个声明区域和多个过程,过程是模块的组成单元。过程名是标识符,命名规则与变量的命名规则相同。过程不能与模块重名,所有标准模

36、块中的过程都不能重名,否则调用过程会出现混乱。VBA根据是否有返回值将过程分为两类:Sub过程和Function过程。,8.6 过程调用与参数传递,8.6.1 Sub过程,Sub过程又称为子过程,调用Sub过程只执行一系列操作,无返回值。1Sub过程定义格式 Sub 过程名(形参l as 数据类型,形参2 as 数据类型,)语句序列 End Sub2.Sub过程调用格式格式1:Call 过程名(实参1,实参2,)格式2:过程名 实参1,实参2,,8.6 过程调用与参数传递,8.6.1 Sub过程,3说明(1)参数之间用逗号分隔,形参与实参要个数相同,类型匹配。(2)调用Sub过程时,格式1的实

37、参必须加括号,格式2的实参不能加括号。(3)用Exit Sub语句可以立即从Sub过程退出。(4)标准模块中的过程可以被所有对象调用,类模块中的过程只在本模块中有效。,8.6 过程调用与参数传递,8.6.1 Sub过程,例8-14 创建两个子程序过程Add和Substract,Add过程实现两个参数相加,Substract实现两个参数相减。输入两个数,调用这两个子程序,计算相加和相减的结果。,8.6 过程调用与参数传递,8.6.2 Function过程,Function过程又称为自定义函数,因为Function过程有返回值,所以建立过程时要给返回值定义数据类型。Function过程通常在标准模

38、块中定义,使用方法与内置函数相似。1Function过程定义格式 Function 过程名(形参l as 数据类型,形参2 as数据类型,)as数据类型 语句序列 过程名=表达式 End Function 2Function过程调用格式 调用Function过程的方式是直接引用过程名,过程名通常用在表达式中。,8.6 过程调用与参数传递,8.6.2 Function过程,3说明(l)形参与实参要个数相同、类型匹配。(2)“过程名=表达式”是定义Function过程不可缺少的语句。(3)用Exit Function可以中途退出Function过程。(4)可以用Public或Private或Sta

39、tic定义过程的作用域。,8.6 过程调用与参数传递,8.6.2 Function过程,例8-15 使用Function过程,计算阶乘。,8.6 过程调用与参数传递,8.6.2 Function过程,3说明(l)形参与实参要个数相同、类型匹配。(2)“过程名=表达式”是定义Function过程不可缺少的语句。(3)用Exit Function可以中途退出Function过程。(4)可以用Public或Private或Static定义过程的作用域。,8.6 过程调用与参数传递,参数传递,在调用过程中,一般主调过程和被调过程之间有数据传递,也就是主调过程的实参传递给被调过程的形参,然后执行被调过程

40、。实参向形参的数据传递有两种方式:传值方式和传址方式。,8.6 过程调用与参数传递,参数传递,1传值方式 在形参前面加ByVal说明符,表示参数传递是传值方式,是一种单向的数据传递。即调用时只能由实参将值传递给形参,调用结束后不能由形参将操作结果返回给实参。实参可以是常量或表达式。2传址方式 在形参前面加ByRef说明符或省略不写,表示参数传递是传址方式,是一种双向的数据传递。即调用时由实参将值传递给形参,调用结束后由形参将操作结果返回给实参。实参只能是变量。,8.6 过程调用与参数传递,例8-17 阅读下面程序代码,分析程序运行结果,参数传递,8.6 过程调用与参数传递,8.6.4 变量的作

41、用域,变量可被访问的范围称为变量的作用范围,也称为变量的作用域。变量的作用域有三个层次:局部范围、模块范围和全局范围。l局部范围在模块的过程内部用Dim或Static关键字声明的变量,称为局部变量。局部变量的作用范围是局部的,只在过程执行期间才存在。,8.6 过程调用与参数传递,8.6.4 变量的作用域,2模块范围 变量定义在模块的所有子过程或函数过程的外部,在模块的通用声明区域,用Dim或Private关键字声明的变量,称为模块级变量。模块级变量在声明它的整个模块中的所有过程中都能使用,但其他模块过程却不能访问。一旦模块运行结束,模块变量的内容自动消失。,8.6 过程调用与参数传递,8.6.

42、4 变量的作用域,3全局范围 在标准模块的通用声明段用Public关键字声明的变量,称为全局变量。全局变量在声明它的数据库中所有的类模块和标准模块的所有过程中都能使用。例如,在标准模块的通用声明区域声明全局变量的语句格式是:Public i As Integer,8.6 过程调用与参数传递,8.6.4 变量的作用域,3全局范围 在标准模块的通用声明段用Public关键字声明的变量,称为全局变量。全局变量在声明它的数据库中所有的类模块和标准模块的所有过程中都能使用。例如,在标准模块的通用声明区域声明全局变量的语句格式是:Public i As Integer,8.6 过程调用与参数传递,8.6.

43、5 变量的生存期,从变量的生存期来分,变量又分为动态变量和静态变量。1动态变量 在过程中,用Dim关键字声明的局部变量属于动态变量。动态变量的生存期是指:从变量所在的过程第一次执行,到过程执行完毕,自动释放该变量所占的内存单元为止的这一段时间。2静态变量 在过程中,用Static关键字声明的局部变量属于静态变量。静态变量在过程运行时可保留变量的值,即每次调用过程时,用Static说明的变量保持上一次的值。,8.6 过程调用与参数传递,例8-18 比较动态变量和静态变量的应用窗体界面如图所示。代码如下:Private Sub Cmd1_Click()Dim x%Static y%x=x+1 y=

44、y+1 b1.Caption=x b2.Caption=yEnd Sub 连续单出“开始”按钮5次,分析结果.,8.6.5 变量的生存期,8.7 VBA的数据库编程,通过Access提供的设计器和向导等工具,可以很轻松地创建表、查询、报表、页、宏等对象。在此基础上,利用VBA编程技术,可以使开发的系统使用比较方便,功能比较完善。当然,如果希望功能更强大,使用更方便,还有DAO和ADO!,8.7 VBA的数据库编程,数据访问对象(DAO)是VBA提供的一种数据访问接口。包括数据库创建、表和查询的定义等工具,借助VBA代码可以灵活地控制数据访问的各种操作。DAO模型是一个复杂的可编程数据关联对象的

45、层次,DAO的对象层次说明如下:,8.7.1 数据访问对象(DAO),1DAO模型结构,8.7 VBA的数据库编程,8.7.1 数据访问对象(DAO),1DAO模型结构,8.7 VBA的数据库编程,8.7.1 数据访问对象(DAO),要想使用DAO访问数据库的对象,首先应该增加一个对DAO库的引用。其引用设置方式为:(1)先进入VBA编程环境。(2)执行“工具/引用”命令,在对话框的,单击“Microsoft DA03.6 object Library”列表项前面的复选框。(4)单击“确定”按钮,完成设置。,2设置DAO库的引用,8.7 VBA的数据库编程,8.7.1 数据访问对象(DAO),

46、通过DAO编程实现据库访问时,首先要创建对象变量,然后通过对象方法和属性来进行操作。下面给出数据库操作一般语句和步骤:(1)创建对象变量定义工作区对象变量:Dim ws As Workspace定义数据库对象变量:Dim db As Database定义记录集对象变量:Dim rs As RecordSet(2)通过Set语句设置各个对象变量的值Set ws=DBEngine.Workspace(0)Set db=ws.OpenDatabase(数据库文件名)Set rs=db.OpenRecordSet(表名、查询名或SQL语句),3利用DAO访问数据库,8.7 VBA的数据库编程,8.7.

47、1 数据访问对象(DAO),3利用DAO访问数据库,(3)通过对象的方法和属性进行操作通常使用循环结构处理记录集中的每一条记录。Do While Not rs.EOF Rs.MoveNext Loop(4)操作的收尾工作rs.close cn.close Set rs=Nothing Set cn=Nothing,8.7 VBA的数据库编程,8.7.1 数据访问对象(DAO),3利用DAO访问数据库,(3)通过对象的方法和属性进行操作通常使用循环结构处理记录集中的每一条记录。Do While Not rs.EOF Rs.MoveNext Loop(4)操作的收尾工作rs.close cn.cl

48、ose Set rs=Nothing Set cn=Nothing,8.7 VBA的数据库编程,8.7.1 数据访问对象(DAO),3利用DAO访问数据库,例8-20:例用DAO编程,完成对表记录的添加、查找、删除、修改等功能,8.7 VBA的数据库编程,ADO为开发者供一个强大的逻辑对象模型,以便开发者通过OLE DB系统接口以编程方式访问、编辑、更新各式各样的数据源。,8.7.2 ActiveX数据(ADO),1ADO模型结构,Connection,Command,Recordset,Fields,8.7 VBA的数据库编程,8.7.2 ActiveX数据(ADO),要想使用ADO访问数据

49、库的对象,首先应该增加一个对AOD库的引用。其引用设置方式为:(1)先进入VBA编程环境。(2)执行“工具/引用”命令,在对话框的,单击“Microsoft ActiveX Data Object 2.1”列表项前面的复选框。(4)单击“确定”按钮,完成设置。,2设置ADO库的引用,8.7 VBA的数据库编程,8.7.2 ActiveX数据(ADO),通过ADO编程实现据库访问时,首先要创建对象变量,然后通过对象方法和属性来进行操作。下面给出数据库操作一般语句和步骤:(1)创建对象变量定义连接对象变量:Dim cnn As New ADODB.Connection定义记录集对象变量:Dim r

50、st As ADODB.Recordset定义字段集对象变量:Dim rs As ADODB.Field(2)对象变量的赋值Set cnn=CurrentProject.Connectionrst.OpenSet rst=New ADODB.Recordset,3利用ADO访问数据库,8.7 VBA的数据库编程,8.7.2 ActiveX数据(ADO),3利用ADO访问数据库,(3)通过对象的方法和属性进行操作通常使用循环结构处理记录集中的每一条记录。Do While Not rs.EOF Rs.MoveNext Loop(4)操作的收尾工作rs.close cn.close Set rs=N

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号