[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt

上传人:sccc 文档编号:6034071 上传时间:2023-09-16 格式:PPT 页数:120 大小:1.48MB
返回 下载 相关 举报
[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt_第1页
第1页 / 共120页
[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt_第2页
第2页 / 共120页
[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt_第3页
第3页 / 共120页
[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt_第4页
第4页 / 共120页
[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt》由会员分享,可在线阅读,更多相关《[其它考试]09第八、九章 模块与VBA—ACCESS培训讲义794613.ppt(120页珍藏版)》请在三一办公上搜索。

1、全国计算机等级考试二级ACCESS培训讲义,考试方式,笔试(选择题35个+填空题15空)公共基础知识(30分;识记为主,理解及推导为辅)ACCESS数据库程序设计(70分;假期把握练习册)机试(三大题)以真题为准,强化练习!基本操作30分简单应用40分综合应用30分,第八章,模块与VBA程序设计,8.1 模块和过程的创建,模块是Access数据库7个对象之一,其实质就是没有界面的VBA程序。模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。模块基本上是由声明、语句和过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA代码进行组织。Access 有两种类型的模块:标准模块和

2、类模块。,8.1 模块和过程的创建,类模块(注意两种模块对比特点)包括窗体模块(模块中包含在指定的窗体或其控件上事件发生时触发的事件过程的代码。)和报表模块(模块中包含由在指定报表或其控件上发生的事件触发的事件过程的代码。),它们各自与某一特定窗体或报表相关联。类模块可以调用标准模块中定义好的过程 作用范围限于所属窗体或报表内部,生命期也随窗体或报表的打开而开始、关闭而结束,8.1 模块和过程的创建,标准模块(注意两种模块对比特点)标准模块包含的是通用过程和常用过程,这些通用过程不与任何对象相关联,常用过程可以在数据库中的任何位置运行。类模块可以调用标准模块中定义好的过程 标准模块中的公共变量

3、和公共过程具有全局特性,作用范围在整个应用程序,生命期伴着应用程序运行而开始、关闭而结束,8.1 模块和过程的创建,模块的基本组成单元过程 Sub子过程 可执行一系列操作,无返回值 可在该子过程之外用CALL显示调用 调用Call mysub(参数1,参数2,)Function函数 执行一系列操作,返回执行结果 返回值直接利用函数名调用获得 调用x=myFuntion(参数),Sub mysub(参数1,参数2,)变量声明部分 操作语句部分 End Sub,Function myFunction(参数)变量声明部分 操作语句部分 End Function,8.1 模块和过程的创建,模块的创建

4、创建一个名为“模块入门”的新模块,8.1 模块和过程的创建,过程的创建 在“模块入门”模块中创建一个Hello过程,8.2 VBA编程环境:VBE界面,工程窗口,属性窗口,代码窗口,立即窗口,对象选定器,过程选定器,8.2 VBA编程环境:VBE界面,ACCESS视图,运行子过程/用户窗体,中断,重新设定,工程管理器,插入模块,属性窗口,对象浏览器,显示出对象库以及工程里过程中的可用类、属性、方法、事件及常数变量。可以用它来搜索及使用既有的对象,或是来源于其他应用程序的对象。,8.2 VBA编程环境:如何进入VBE,进入VBE的基本方法(了解选择题)在数据库窗口单击“工具”“宏”“Visual

5、 Basic编辑器”双击要查看或编辑的模块对象 新建一个模块对象 对窗体和报表,在设计视图中点击“代码”按钮 对窗体和报表,在设计视图中,点击某一控件的“事件属性”,8.3 面向对象编程基本概念,一、对象与类 对象:对象是基本的运行时的实体,如窗体、报表、各种控件等,包括作用于对象的操作(方法)和对象的响应(事件)。将数据和处理这些数据的过程封装在一起。类:一个抽象的整体概念,对象是类的实例化。类与对象是面向对象程序设计语言的基础。例:“学生”类,“张三”对象,8.3 面向对象编程基本概念,二、属 性(Property)所有对象都有自己的属性。用来描述和反映对象特征的参数。如:控件名称(Nam

6、e)、标题(Caption)、颜色(Color)、字体(FontName)等属性决定了对象展现给用户的界面具有什么样的外观及功能。对象属性设置的方法:在设计模式下,通过属性窗口直接设置对象的属性。在程序的代码中通过赋值实现,其格式为:对象名.属性名=属性值 例:Label10.Caption=“显示”,8.3 面向对象编程基本概念,在VBA中引用ACCESS对象:基本语法:Forms(或Reports)!窗体(或报表)名称!控件名称.属性名 注意要点 如果在通用模块或在一类模块中引用另一类模块的控件时,应该使用上述完整语法。如果在类模块中引用自己窗体上的控件,仅采用下面语法:控件名称.属性名,

7、例如:在窗体Form1中引用Form2上的Label1控件 Forms!Form2!Label1.Caption=“教师信息表”在引用Form2上引用自己的Label1控件 Label1.Caption=“教师信息表,基本控件常用属性(详见教材P303附录C),8.3 面向对象编程基本概念,三、事件(Event)及事件过程(Event Procedure)事件:可被对象识别的动作。如:窗体打开OnOpen,按钮的单击OnClick,双击OnDbClick等 事件过程:是指附在该对象上的程序代码,是事件触发后处理的程序。事件过程的形式如下:Sub 对象名_事件过程名(参数列表).(事件过程代码)

8、End Sub,例如:Sub cmdOk_Click()cmdOk.FontSize=20 设置命令按钮的字体大小为20 End Sub,8.3 面向对象编程基本概念,四、方 法(Method)方法:在对象上可操作的过程,是VB系统提供的一种特殊的过程和函数 方法是面向对象的,所以方法调用一般要指明对象。对象方法调用形式:对象.方法 参数列表,例如:Debug.print 欢迎您使用ACCESS 在立即窗口中打印出文字,8.4 VBA数据类型、常量、变量,本节内容及要求 1.熟悉VB程序中代码和语句书写规则 2.掌握VB的数据类型 3.掌握VB的运算符和表达式的使用 4.掌握常用内部函数的使用

9、,8.4 VBA数据类型、常量、变量,编码规则 1.VBA代码中不区分字母的大小写。2.一条语句写完后不需加任何结束符。3.同行上可以书写多条语句,语句间要用冒号“:”分隔。4.若一个语句行不能写下全部语句时,可以换行。换行时需在本行后加入续行符,1个空格加下划线“_”。5.一行最多允许255个字符。6.注释以Rem开头,也可以使用单引号“”,注释内容可直接出现在语句的后面。7.在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。8.函数和方法后应加上括号()。,8.4 VBA数据类型、常量、变量,编码规则举例 LABEL10与label10相同 x=y+z:y=z+x:z=y+x

10、在同一行书写了三个语句 MyVar=“这是一个 _&“例子说明如何 _&“续行代码“注意:采用空白加下划线(_)可接续两行以上的代码。This is a comment.()引导注释文本 Rem This is a comment Rem引导注释文本 If Number=1 Then GoTo Line1 Else GoTo Line2 End if Line1:标号1 MyString=“数值等于1“Line2:标号2 MyString=数值等于2,Sub x4()Dim x As Integer,y As Integer,z As Integery=1:z=1x=y+z:y=z+x:z=y

11、+xDebug.Print x,y,z的值分别是:,x,y,zEnd Sub,8.4 VBA数据类型、常量、变量,数据类型标准数据类型,8.4 VBA数据类型、常量、变量,在Access中,有4种不同的编辑环境需要用户指定数据类型表设计视图、查询参数、VBA代码、SQL查询视图。其数据类型与VBA数据类型对比,如右图所示。(了解一下),数据类型的对比,8.4 VBA数据类型、常量、变量,数据类型之间的转换 在进行VBA编程过程中,用户可以将一种数据类型的数据转换成另一种特定类型的数据。,4舍6入5留双的修约规则条件(1)当你要进行修约的小数位上是5的时候;条件(2)5后面的所有小数位上没有任何

12、有效数值。当条件(1)(2)同时成立的时候,那么会有两种修约结果,需要判断5前面的数位上的数字是奇数还是偶数。结果(1):如果是奇数:那么修约这个小数位的结果是向上进1;结果(2):否则修约这个小数位的结果是直接舍掉。当条件(1)条件(2)有一条不成立的时候会有第三中修约结果。结果(3)那就直接进行普通的四舍五入就好了。,举例:3.15、3.25和3.251 修约后保留1位小数。3.15和 3.25符合以下条件:(1)需要修约的小数位上恰好数值是5;(2)并且5后面没有任何数值了这时就是前面所说的,当条件(1)(2)同时成立的时候。对于3.15,5前面是1,属于奇数:此时修约位向上进1,修约结

13、果是:3.2对于3.25,5前面是2,属于偶数:此时修约位进行舍弃,修约结果是:3.2对于3.251由于不符合条件(2)直接进行普通的四舍五入,修约结果是:3.3,8.4 VBA数据类型、常量、变量,数据类型自定义类型 在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。,基本语法:Private|Public Type 类型名 元素名 As 数据类型 元素名 As 数据类型 End Type,例:定义学生类型数据 Public Type Students Name As String*8 Age As Integer End Type,声明变量:Dim Student As

14、Students 引用数据:Student.Name=”张三”Student.Age=15,8.4 VBA数据类型、常量、变量,标准数据类型要点 Boolean 数据类型:值只能是 True 或是 False。当转换其他的数值类型为 Boolean 值时,0 会转成 False,而其他的值则变成 True。当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为-1。Date 数据类型:日期须以数字符号(#)扩起来,例如,#2008-3-23#Object 数据类型:利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。Variant 数据类型

15、:所有没被显式声明(用如Dim、Private、Public或Static等语句)为其他类型变量的数据类型。,8.4 VBA数据类型、常量、变量,Variant 数据类型 Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据,以及Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函数(变量类型)或 TypeName(类型名)函数来检查 Variant 中的数据实际类型。,8.4 VBA数据类型、常量、变量,Vartype函数返回值及意义,8.4 VBA数据类型、常量、变量,标识符 程序中常量、变量、过程等

16、对象的名字,VBA标识符规定:第一个字符必须是字母或下划线(_)包含的字符数不超过255个 不得与VBA的关键字同名,如不能使用Sub、For等 不能使用下列字符:!&$#(空格)从增强程序可读性角度出发,标识符应使人望文生义,了解其代表的内涵。,8.4 VBA数据类型、常量、变量,常 量 在程序运行过程中,其值不能被改变的量称为常量。VBA中有三类常量:普通常量、符号常量、系统常量 普通常量 整型常量:10、110%(Integer)、23&(Long)实型常量:0.123!(Single)、-1.123#、1.25E+3、-1.25E-3 字符串常量:“ABD”、“XYZ、”大家好”逻辑常

17、量:ture、false 日期常量:#2002-5-4 14:30:00 PM#、#09/02/99#,8.4 VBA数据类型、常量、变量,符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。关键字Const 声明符号常量,基本语法如下 Const 常量名 As 类型|类型符号=常数表达式,例如:Const PI#=3.1415926535 等价于:Const PI As Double=3.1415926535,8.4 VBA数据类型、常量、变量,系统常量 VBA系统提供了应用程序和控件的系统定义常数。它们存放于

18、系统的对象库中,在“对象浏览器”中能查看这些常数。,颜色常数 常数 值 描述 vbBlack 0 x0 黑色 vbRed 0 xFF 红色 vbGreen 0 xFF00 绿色 vbYellow 0 xFFFF 黄色 vbBlue 0 xFF0000 蓝色 vbMagenta 0 xFF00FF 紫红色 vbCyan 0 xFFFF00 青色 vbWhite 0 xFFFFFF 白色,星期常数 常数 值 描述 vbSunday 1 星期日 vbMonday 2 星期一 vbTuesday 3 星期二 vbWednesday 4 星期三 vbThursday 5 星期四 vbFriday 6 星

19、期五 vbSaturday 7 星期六,8.4 VBA数据类型、常量、变量,变 量 程序中的变量为临时存在单元,可存放文字、数值、日期和对象属性。每个变量都有一个名字,程序通过变量名对变量进行存取操作。用Dim语句显式声明变量 1、Dim 变量名 AS 类型 或 Dim 变量名类型符 2、声明的每个变量都要一个单独的 As 类型 子句,没有的作为变体类型(Variant),例1:Dim iCount As integer,sum As single 等价于:Dim iCount%,sum!例2:Dim iCount As integer,sum,name as string*10 则声明了三个

20、变量,其中icount为整型,sum为变体型,name为长度为10的定长字符串,8.4 VBA数据类型、常量、变量,隐式声明变量 VBA允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VBA根据程序中赋予变量的值来自动调整变量的类型。,例如:变量a,b,Sum都没有事先定义。Private Sub Form_Click()Sum=0 a=10:b=20 Sum=a+b debug.Print Sum=“&Sum End Sub,模块与VBA,8.4 VBA数据类型、常量、变量,强制显式声明变量Op

21、tion Explicit 良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA中可以强制显式声明,在窗体模块、标准模块和类模块的通用声明段中加入:Option Explicit,8.4 VBA数据类型、常量、变量,变量的作用域和生命周期 VBA中,变量定义的位置和方式不同,则变量存在的时间和起作用的范围也有所不同,即变量的作用域与生命期。变量的可见性:即可对变量进行操作的状态。变量作用域的三个层次:局部范围(过程级别)、模块范围、全局范围,8.4 VBA数据类型、常量、变量,局部范围(过程级别):定义在模块的过程内部,只有在声明此变量的过程

22、中才可使用 定义方式:Dim x As Singl Static y As single 用Dim 定义的局部变量只有在它所在的过程运行时才会有值 Static定义的局部变量在整个程序运行期间均有值,所以它可以作为中间变量保存结果。模块范围(Private):定义在模块的所有过程外部的起始位置,运行时在模块所包含的所有子过程和函数中可见。全局范围(Public):定义在模块的所有过程外部的起始位置,运行时在所有类模块和标准模块的所包含的所有子过程和函数过程中都见。一般函数默认为Public,变量的作用域和生命周期举例,x全局变量 y过程变量 z过程静态变量,8.5 数 组,数组并不是一种数据类

23、型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。一维数组(线状)Public/Private/Static/Dim 数组名(下界 To 上界)As 数据类型 下界和上界不能使用变量,必须是常量,一般是整型常量。,例如:Dim Workers(8)As Integer 未定义下界,下届默认为0,有08共9个元素 Dim Workers(1 To 8)As Integer 下届为1,上届为8,有18共8个元素,8.5 数 组,数组的引用 数组必须先定义后使用 使用形式:数组名(下标)引用时下标可以是整型变

24、量、常量或表达式。引用不能下标越界,通常可以通过一个For循环处理数组 Dim Numbers(1 To 10)As Integer Dim I As Integer For I=1 To 10 Numbers(I)=30 Next I 如果I=11怎么办?,8.5 数 组,二维数组(表的形式)和多维数组 Dim 数组名(下界 To 上界,下界 To 上界,)As 数据类型 dim Aa(19,19)As Integer 等价于 dim Aa(1 To 20,1 To 20)As Integer,下面将值30赋给数组:Dim I As Integer,J As Integer Dim Aa(9

25、,9)As Integer For I=0 To 9 For J=0 To 9 Aa(I,J)=30 Next J Next I,8.5 数 组,动态数组 如果在程序运行之前不能肯定数组的大小,可以使用动态数组。申明方法:Dim 数组名()As 数据类型 过程中用ReDim语句改变数组的大小 ReDim 数组名(下标1,下标2)ReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。每次使用ReDim语句都会使原来数组中值丢失。,8.5 数 组,例1:利用Redim改变数据维数和大小。Sub arraychange()Dim x()as interge ReD

26、im x(20)x(20)=30 debug.Print x(20)ReDim x(20,5)x(20,5)=10 debug.Print x(20,5)End sub,8.6 运算符,1.算术运算符(均是双目运算,ia=3),例如:5+10 mod 10 9/3+2 2 结果是?5+10 mod 10 8/2+22 结果又是?,109,8.6 运算符,2.字符串运算符 字符串运算符有:、+(连接两字符串)区别+(连接运算):两个操作数均应为字符串类型;&(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。,例:100+123 结果为

27、 100123 Abc+123 出错 100&123 结果为 100123 100&123 结果为 100123 Abc&123 结果为 Abc123,8.6 运算符,3.关系运算符,8.6 运算符,4.逻辑运算符 非Not、与And、或Or、异或Xor、逻辑相等(同或)Eqv、隐含(逐位比较)Imp Not逻辑非为单目运算符(要求一个操作数),其它为双目运算符。,0:false,1:true,8.6 运算符,5.运算符的执行顺序 表达式中的多种不同类型的运算符的优先级如下:算术运算符=字符运算符关系运算符逻辑运算 基本说明:当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连

28、接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。,8.7 常用函数(详见教材P295附录A),VBA中提供了各种函数,利用函数可以完成许多相关的操作。其使用形式如下:函数名(参数列表),要点说明 1.取整函数int()和fix()Fix(N)为截断取整,即去掉小数后的数:Fix(9.59)=9 Int(N)不大于N的最大整数:Int(9.59)=9、Int(-9.59)=-10,8.7 常用函数,要点说明 2.Rnd函数返回01(包括0和

29、不包括1)之间的单精度随机数。例:产生1-100的随机整数:Int(Rnd*100)+1 怎样产生N,M区间的随机数?int(N+(M-N+1)*Rnd)例 Int(100+201*Rnd)随机数100,300 3.类型转换函数 Asc(“Abcd”)值为65 只取首字母的Ascii值 Val(abc123)值为0,Val(1.2sa10)值为1.2 注意:Val()函数只将最前面的数字字符转换为数值。,8.7 常用函数,4.日期函数 Date():返回系统日期,如 2008-03-25 Time():返回系统时间,如 19:30:25 Now():返回系统日期和时间:2008-03-25 1

30、9:30:25 Weekday(时间,w):返回17的整数,表示星期几。其中可选参数w是指定一星期的第一天是星期几的常数。例:weekday(#2004-2-29#)=1 即2004-2-29为星期天 若 weekday(#2004-2-29#,3)=6 即让星期二为第一天 DateAdd()、DateDiff()、DatePart()及DateSerial()相关参数见书P216,8.8 三种基本结构程序设计,传统流程图中的基本符号,8.8 三种基本结构程序设计,三种基本结构,8.8 三种基本结构程序设计,三种基本结构,8.8 三种基本结构程序设计,选择结构,1.IfThen语句(单分支结构

31、)If Then 语句块 End If 或 If Then,例:已知两个数x和y,比较它们的大小,使得x大于y.If xy Then t=x:x=y:y=t End If 或 If xy Then t=x:x=y:y=t,8.8 三种基本结构程序设计,2.IfThenElse语句(双分支结构)If Then Else End If If Then Else,例:输出x,y两个中值较大的一个值。IF XY Then Print X Else Print Y End If 单行形式:IF XY Then Print X Else Print Y,8.8 三种基本结构程序设计,2.IfThenEls

32、e语句(双分支结构)If Then Else End If If Then Else,例:输出x,y两个中值较大的一个值。IF XY Then Print X Else Print Y End If 单行形式:IF XY Then Print X Else Print Y,8.8 三种基本结构程序设计,3.IfThenElseIf语句(多分支结构)形式:If Then ElseIf Then ElseIf Then Else 语句块 n+1 End If,8.8 三种基本结构程序设计,If x=90 then Debug.Print 优秀 ElseIf x=80 Then Debug.Prin

33、t 良好 ElseIf x=70 Then Debug.Print 中等 ElseIf x=60 Then Debug.Print 及格 Else Debug.Print 不及格 End If,例:输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以为“不合格”,8.8 三种基本结构程序设计,Select Case语句(情况语句),Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select,是否满足:表达式列表可

34、有下面四种形式之一:表达式 A+5 一组枚举表达式(用逗号分隔)2,4,6,8 表达式1 To 表达式2 60 to 100 Is 关系运算符表达式 Is 60,数值型或字符串表达式,8.8 三种基本结构程序设计,Select Case x Case 90 to 100 Print 优秀 Case 80 to 89 Print 良好 Case 70 to 79 Print 中等 Case 60 to 69 Print 及格“Case 60 to 65 Print“在60到65之间“Case Else Print 不及格 End Select,例:使用select case.语句来实现成绩等级评

35、选,程序段如下,注意:按照在 Select.Case 结构中出现的顺序,将表达式的值和 Case 语句中的值进行比较。如果发现一个匹配项或一条 Case Else 语句,则执行相应的语句块。在任何情况下,随后都会将控制转移到 End Select 语句后面的语句。,8.8 三种基本结构程序设计,选择结构的嵌套 在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或Select Case语句,同样Select Case语句每一个Case分支中都可嵌套另一IF语句或另一Select Case语句。下面是两种正确的嵌套形式:,(1)IF Then.if Then Else.End If

36、.Else.IF Then.Else.End If.End IF,(2)IF Then.Select Case Case IF Then Else.End If Case.End Select.End IF,8.8 三种基本结构程序设计,VBA的三个选择函数 IIF函数:IIf(条件式、表达示1,表达示2)条件为真,返回表达式1的值;为假,返回表达示2的值 如:IIf(ab,a,b)返回a,b中较大的值 Switch函数 switch(条件式1,表达式1条件式2,表达式2)条件式与表达式成对出现,如有条件式为真,则返回对应表达式的值 y=switch(x0,1,x=0,0,x0,1)根据x的值

37、来为y赋值。Choose函数 Choose(索引式,选项1,选项2,选项n)根据索引式的值返回选项列表中的某个值 y=choose(x,1,m,7,n)根据x的值来为y赋值。,8.8 三种基本结构程序设计,循环结构 DoLoop:通过Do来执行循环,有四种形式。其中While是条件为真时循环,Until是条件为假时循环。,形式1、2(当型循环):Do While|Until 语句块 Exit Do 语句块 Loop,8.8 三种基本结构程序设计,当型循环举例,Sub Command1.Click()Dim I As Intger I=1 Do While I=20 Print I I=I+1

38、Loop End Sub,Sub Command1.Click()Dim I As Intger I=1 Do Until I=20 Print I I=I+1 Loop End Sub,结果I21,结果I=1,8.8 三种基本结构程序设计,循环结构,形式3、4:(直到循环)Do 语句块 Exit Do 语句块 Loop While|Until,8.8 三种基本结构程序设计,直到循环举例,Sub Command1.Click()Dim I As Intger I=1 Do Print I I=I+1 Loop While I=20 End Sub,Sub Command1.Click()Dim

39、 I As Intger I=1 Do Print I I=I+1 Loop Until I=20 End Sub,结果I=21,结果I=2,8.8 三种基本结构程序设计,WhileWend语句循环结构,While Wend,说明:该语句的功能与Do While.Loop实现的循环完全相同。区别在于该语句中不能出现Exit语句!,Sub Command1.Click()Dim I As Intger I=1 While I=20 Print I I=I+1 Wend End Sub,8.8 三种基本结构程序设计,For循环语句(一般用于循环次数已知),For 循环变量初值 to 终值 Step

40、 步长 语句块 Exit For 语句块 Next 循环变量,8.8 三种基本结构程序设计,For循环语句(一般用于循环次数已知),循环次数,例:For I=2 To 13 Step 3 Print I,Next I Print“I=“,I 循环次数?输出结果?,循环执行次数 输出I的值分别为:2 5 8 11 循环结束,出了循环输出为:I=14,8.8 三种基本结构程序设计,循环的嵌套多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定。以下是各种嵌套循环的示例:,(1)For I=.For J=.Next J.Next I,(2)F

41、or I=.Do While/Until.Loop.Next I,(3)Do While.For J=.Next J.Loop,(4)Do While/Until.Do While/Until.Loop.Loop,8.8 三种基本结构程序设计,对于循环的嵌套,要注意以下事项(重点)(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.正 确错 误,For ii=1 To 10 For ii=1 To 20 Next ii Next ii,8.9 其它语句,1.Goto 语句 形式:GoTo 标号|行号 作用是

42、无条件地转移到标号或行号指定的那行语句.由于goto语句破坏了程序的逻辑顺序,一般不赞成使用,If Number=1 Then GoTo Line1 Else GoTo Line2 Line1:标号1 MyString=Number equals 1“Line2:标号2 MyString=Number equals 2,8.9 其它语句,2.Exit 语句 Exit 语句用于退出 Do.Loop、For.Next、Function或Sub代码块。对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出DO循环、For循环、函数过程、子过程。

43、,例如:下面的例子是使用 Exit 语句退出 For.Next 循环、Do.Loop 循环及子过程。,8.9 其它语句,Private Sub Form_Click()Dim I%,Num%Do 建立无穷循环。For I=1 To 100 循环 100 次。Num=Int(Rnd*100)生成一个099的随机数。Select Case Num Case 10:Exit For 退出 For.Next 循环。Case 50:Exit Do 退出 Do.Loop 循环。Case 64:Exit Sub 退出子过程。End Select Next I Loop End Sub,8.10 过程调用与参

44、数传递,Sub子过程 在VBA中,的Sub子过程分为:事件过程和通用过程 1.事件过程,(2)控件事件的语法 Private Sub 控件名_事件名(参数列表)语句组 End Sub,(1)窗体事件的语法 Private Sub Form_事件名(参数列表)语句组 End Sub,8.10 过程调用与参数传递,2.通用过程,子过程的定义形式如下:Public|PrivateStatic Sub 子过程名(形参表)语句组 Exit Sub 语句组 End Sub,说明:(1)子过程名:命名规则与变量名规则相同。子过程名不返回值,而是通过形参与实参的传递得到结果,调用时可返回多个值。,8.10 过

45、程调用与参数传递,(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。(3)过程可以无形式参数,但括号不能省。(4)参数的定义形式:ByValByRef变量名()As 类型,,ByVal表示当该过程被调用时,参数是按值传递的;ByRef(缺省)表示当该过程被调用时,参数是按地址传递的。,例.一个交换两个整型变量值的子过程。Private Sub Swap(X As Integer,Y As Integer)Dim temp As Integer Temp=X:X=Y:Y=Temp End Sub,8.10

46、过程调用与参数传递,Function过程,Public|PrivateStaticFunction 函数名()As 函数体函数名=返回值 Exit Function 函数名=返回值 End Function,注意:在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。,8.10 过程调用与参数传递,过程的调用(重点),1 子过程的调用 子过程名 参数列表 或 Call 子过程名(参数列表)2 函数过程的调用 变量名=函数过程名(参数列表),说明:(1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。,8.10

47、 过程调用与参数传递,(2)调用时把实参值传递给对应的形参。其中值传递时实参的值不随形参的值变化而改变(形变实不变)。而地址传递时实参的值随形参值的改变而改变(形变实也变)。(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。(4)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则实参之间用“,”分隔。,例:调用上面定义的Sawp子过程的形式:Swap a,b Call Swap(a,b),8.10 过程调用与参数传递,Private Sub CmdOK()Call Swap(a,b)Swap a,b End Sub,Private Sub Swap(

48、x%,y%)Dim temp%Temp=X X=Y Y=Temp End Sub,过程调用的执行过程:,8.10 过程调用与参数传递,过程之间参数的传递,1、形式参数 是指在定义通用过程时,出现在Sub或Function语句中的变量名后面园括号内的数,是用来接收传送给子过程的数据,形参表中的各个变量之间用逗号分隔。,2、实际参数 实际参数是指在调用Sub或Function过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或Function过程与其对应的形参变量。实参可由常量、表达式、有效的变量名、数组名(后加左、右括号,如A()组成,实参表中各参数用逗号

49、分隔。,10.10 过程调用与参数传递,3、参数传递(虚实结合)参数传递指主调过程的实参(调用时已有确定值和内存地址的参数)传递给被调过程的形参,参数的传递有两种方式:按值传递、按地址传递。形参前加“ByVal”关键字的是按值传递,缺省或加“ByRef”关键字的为按地址传递。,传址与传值 传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。(形变实也变)。传值:形参得到的是实参的值,形参值的改变不会影响实参的值。(形变实不变),10.10 过程调用与参数传递,Sub Swap2(x%,y%)Dim Temp%Temp=x:x=y:y=Temp End Sub,Sub Swap1(B

50、yVal x%,ByVal y%)Dim Temp%Temp=x:x=y:y=Temp End Sub,例6.4 定义子过称swap1 定义子过称swap2,Private Sub CmdOK_Click()a%=10:b%=20:Swap1 a,b 调用swap1传 值 Print A1=“&a&B1=“&b a=10:b=20:Swap2 a,b 调用swap2传地址 Print A2=“&a&B2=“&b End Sub,9.1 VBA中的常用操作,1.消息窗MsgBox(详见教材P247)消息窗用于显示消息,等待用户单击按钮,并返回一个整型值。基本格式:MsgBox(提示,按钮风格,标

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号