国家二级计算机access 模块_第1页
国家二级计算机access 模块_第2页
国家二级计算机access 模块_第3页
国家二级计算机access 模块_第4页
国家二级计算机access 模块_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章模块8.1模块的基本概念8.2过程及模块分类8.3VBA程序设计基础8.1模块的基本概念Access的表、查询、窗体、报表和数据访问页不能相互驱动和调用。使用模块和宏可以将数据库中所有对象联系起来、统一管理,形成完整的数据库系统。通过上一章对宏的学习,我们了解到可以利用宏来执行一系列简单的操作。但是如果要对数据库对象进行更复杂、更灵活的控制,就需要通过编程来实现。在Access中,编程是通过模块对象实现的。利用模块可以将各种数据库对象联结起来,从而使其构成一个完整的系统。它的功能比宏更强大,设计也更为灵活。模块是Access的数据库中的一个重要对象。模块是由VBA(VisualBasicforApplications)语言编写的程序的集合。是以函数过程(Function)或子过程(Sub)为单元的集合方式存储。模块可分成两种基本类型:类模块和标准模块。8.1模块的基本概念区分:VB,VBA,VBE(VisualBasicEditor)窗体和报表模块是类模块的典型例子。窗体和报表模块通常都含有事件过程,该过程用于响应窗体或报表中的事件,可以使用事件过程来控制窗体或报表的行为,以及它们对用户操作的响应。8.1.1类模块窗体模块和报表模块中的过程可以调用标准模块中已经定义好的过程。窗体模块和报表模块具有局部特性,其作用局限在所属窗体或报表内部,而生命周期则是伴随着窗体的打开而开始、关闭而结束。8.1.1类模块标准模块一般用于存放供其它Access数据库对象使用的公共过程。在Access中,可以通过创建新的模块对象而进入其代码设计过程。标准模块通常安排一些公共变量或过程供类模块里的过程调用。在各个标准模块内部也可以定义私有变量和私有过程仅供本模块内部使用。标准模块中的公共变量和公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。8.1.2标准模块在数据库窗口—宏对象下—选择宏—选择“工具”菜单下“将宏转换为vb”。8.1.3将宏转换为模块P2461.模块模块是由过程组成的。2.过程过程:将VBA语言的声明和语句集合在一起,作为一个命名单位的程序段(执行特定功能的语句块)。它包含许多语句和方法,以执行特定的操作或计算数值。8.2过程及模块分类P247(创建模块)过程的二种类型:sub子过程:执行一系列操作的过程。

function函数过程:特殊的、能返回值的函数过程。区别方法:能否返回值,是过程和函数之间最大的区别。8.2过程及模块分类P247(创建模块)子过程:也称为Sub过程,是执行一项操作的过程。子过程没有返回值,子程序以关键字Sub开始,并以EndSub语句作为结束。可以引用过程名调用,或使用关键字Call8.2过程及模块分类-子过程子过程格式:Sub子程序名()[程序代码]EndSub例:编写标准模块1,写子过程model,输出消息框:这是model,位于标准模块编写窗体类模块1,写字过程class,输出消息框:这是class,位于窗体类模块函数过程:也称为Function过程,是一种能够返回具体值的过程,返回的值可以在表达式中使用。函数过程以关键字Function开始,并以EndFunction语句作为结束。不能使用call调用,直接引用函数过程名,函数名后要加括号。函数格式:Function函数名称()as数据类型[程序代码]EndFunction8.2过程及模块分类-函数例:在标准模块中编写全局函数yesterday()在数据库窗口对象下,双击“在设计视图中创建窗体”,在窗体中添加文本框,标签名称为“欢迎”,添加2个命令按钮,标题分别为“显示”和“清除”,然后选中“显示”按钮,单击“属性”按钮,选择“事件”选项卡,单击“单击”项中的“…”,在代码窗口中输入vba语句。在代码窗口的对象框中选择“清除”按钮(命令2),在该过程中输入vba语句。在代码窗口的对象框中选择“form”,在该过程中输入vba语句。返回到窗体,单击窗体视图,分别单击显示和清除按钮,看运行情况。作业1作业2:在模块对象下创建函数过程,计算半径为3的球的体积。操作步骤如下:在模块对象下,单击“新建”按钮,打开新建模块窗口,单击“插入”菜单上“过程”,在过程对话框中选择类型为“函数”范围为“公共的”,输入名称为“volume”,单击“确定”按钮。在函数过程中填写vba语句。PublicFunctionVolume()AsSingleVolume=4/3*3.14*3^3EndFunction在窗体文本框中调用函数function()显示结果:113.04计算半径为3的球的体积。1.对象在VBA程序设计时,界面上的所有事物都可以称为对象。每一个对象都有自己的属性、方法和事件。用户是通过属性、方法和事件来处理对象的。8.3VBA程序设计基础

8.3.1面向对象程序设计的基本概念属性和方法:描述了对象的性质和行为。引用:对象名.属性或对象名.方法[参数名表]对象的属性例:label0.caption=“学生成绩表”对象的方法例:text1.setfocusDoCmd对象: 有许多方法,如Openform 打开窗体例如:DoCmd.Openform“学生登记”RunMacro 运行宏操作等,例如Docmd.RunMacro“mac1”2.对象的属性和方法P248打开当前数据库中的“雇员”窗体DoCmd.OpenForm"EmployeesDocmd.Runmacro“Macro1”方法的例子省略的参数方法窗体名宏名3.事件P248事件:对象可辨认的动作,如单击鼠标、按下某个键等事件响应代码:若为一个事件编写一段VBA代码,则在事件发生时执行代码,完成指定的动作。窗体中添加文本框和命令按钮,命令按钮属性中“单击”事件中添加vba代码,然后窗体视图查看结果。PrivateSub命令2_Click()文本0.FontSize=20EndSub8.3.2VBA编程环境工程窗口-选择对象属性窗口-选择对象的属性代码窗口选择事件1.进入VBE编程环境P2522.VBA窗口1)标准工具栏视图MicrosoftAccess按钮:切换Access2000窗口插入按钮:插入模块或过程运行子过程/用户窗体按钮:运行模块中的程序中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换工程资源管理器按钮:用于打开工程资源管理器属性窗口按钮:用于打开属性窗口对象浏览器按钮:用于打开对象浏览器MicrosoftAccsee插入模块运行子过程/用户窗体设计模式中断重新设计工程资源管理器对象浏览器属性窗口3.工程、属性、代码窗口工程窗口:也叫工程资源管理器,显示应用程序中用到的模块文件列表。可控制代码窗口、对象窗口,以及对象文件夹的显示。属性窗口:所选对象的属性列表。可“按字母序”和“按分类序”查看属性,编辑这些对象的属性。在属性窗口显示Access类对象的方法:先在设计视图中打开对象。再双击工程窗口上的一个模块或类,代码窗口就会显示相应的指令和声明。代码窗口:用于输入和编辑VBA代码。4.在代码窗口中编程P254(三)对象列表过程列表提示信息_自动显示或Ctrl+JF1:VBA帮助窗口F2:对象浏览器窗口一、数据类型和数据库对象在VisualBasic环境下进行计算时,常常需要临时存储数据。像大多数编程语言那样,VisualBasic使用变量来存储值。变量有名字和数据类型。变量的数据类型决定了如何将这些值存储到计算机的内存中。在声明变量时也可指定它的数据类型,所有变量都具有数据类型,以决定能够存储哪种数据类型。用户可以定义各种数据类型。Access中数据类型的应用:声明过程中的变量,定义表、函数的参数等。VBA的数据类型表P256表8.38.3.3常量、变量、运算符和表达式P255VBA主要数据类型P255数值型数据的符号:整型%、长整型&、单精度型!、双精度型#例:10.33#100%布尔型数据的值:两种值:True和False,其他数值类型转换为布尔型时,0变成False,其他值均为True。布尔型转换为其他型时,False成为0,True成为-1。日期型变量的值:日期值用#括起来,如 #2004/11/23#Variant(变体)数据类型:若未给变量指定数据类型,Access自动指定其为Variant类型。Variant可包含除定长String数据及用户定义类型之外的任何种类的数据。也可包含Empty、Error、Nothing及Null特殊值。 %(Integer)、&(Long)、!(Single)、#(Double)、$(String)和@(Currency)。类型说明符号使用时是作为变量名的一部分,放在变量名的最后一个字符。例如,intX%是一个整型变量;douY#是一个双精度变量;strZ$是个字符串变量。在使用时不能将类型说明符号省略。如:intX%=1243douY#=45665.456strZ$="Access"二、变量VisualBasic使用变量来存储值。用来保存在程序运行期间可修改的数据。变量名可随意定义,但不能与VBA关键词冲突,变量的值可按需变化。变量必须先声明数据类型,然后才能使用。1.声明变量每一个变量都必须在其使用的过程中事先声明。声明变量的作用:指定变量的数据类型和作用域。未声明的变量默认为Variant类型。若要求在使用变量前必须声明,可进行设置。声明一个变量用Dim语句,它的语法格式如下:

Dim变量名[As数据类型]语句中的“As类型”子句是可选的。如果使用了该子句,就可以定义变量的数据类型或对象类型。使用Dim语句来声明变量,其功能为声明变量,并为变量分配存储空间。例如,Dim

MYNameAsStringDims1AsString*50‘说明定长字符串变量可存放50字符DimxAsInteger或Dimx%

声明了字符串变量MyName的Sting。可给其赋值:MyName=“李红”赋值之后即可引用该变量:MsgBox“姓名:”&MyName‘弹出消息框,显示:姓名:李红可在同一行内声明多个变量。例如,DimA_Var,t1AsBoolean,D1AsDate其中A_Var的类型未指定类型。默认为Variant。2条语句是等价的变量的初始化:声明而未赋值的变量的值为:

◆数值变量初始化为0

◆变长字符串为零长度串,定长字符串都填上零

◆Variant变量初始化为Empty

2.变量的命名原则在VBA的代码中,过程、变量及常量的名称有如下规定:(l)最长只能有255个字符。(2)必须用字母开头。(3)可以包含字母、数字或下划线字符“_”。(4)不能包含标点符号或空格。(5)不能是VisualBasic关键字。关键字是那些在VisualBasic中用作语法的一部分的词,包括预定义语句(如If和Loop)、函数(如Len和Abs)和运算符(如Or和Mod)等等。在VBA编程窗口选择:工具|选项数据库所有新模块中自动添加OptionExplicit语句,功能为:强制对模块中的所有变量进行显式声明。也可直接将语句输入到模块的声明节。3.强制对模块中的所有变量进行显式声明的设置。4.隐含型变量没有直接定义,借用一个值指定给变量名的方式来建立的变量称为隐含型变量。例:s1=123这种变量名称后没有附加类型说明字符来指明的隐含型变量的数据类型为默认的Variant类型。若在命令名称后加附加类型说明则指定了改变量的数据类型。例:s1%=123s1则为整形变量。5.变量的作用域变量的范围确定了能够使用该变量的那部分代码。一旦超出了作用范围,就不能引用它的内容。变量的作用范围是在模块中声明确定的。声明变量时可以使用三种不同的作用范围:Public、Private、Static和Dim。变量的作用域决定了这个变量是被一个过程使用还是一个模块中的所有过程使用,还是被数据库中的所有过程使用。(1)过程内部使用的变量过程级变量只有在声明它们的过程中才能被识别,也称它们为局部变量。用Dim或者Static关键字来声明它们。例如:DimV1AsInteger或StaticV1AsInteger在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim声明的变量只在过程执行期间才存在。(2)模块内部使用的变量模块级变量对该模块的所有过程都可用,但对其他模块的代码不可用。可在模块顶部的声明段用Private关键字声明变量,从而建立模块级变量。例如;PrivateV1AsInteger在模块级,Private和Dim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。(3)所有模块使用的变量为了使模块级的变量在其他模块也有效,可用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明来声明公用变量。例如:PublicV1AsInteger用户不能在过程中声明公用变量,而在模块中声明的变量可用于所有模块。三、数据类型之间的转换P257例:下列程序中将双精度型变量转换成字符串型。DimS1AsDoubleDimS2AsStringS1=437.327‘S1变量赋值为437.327 S2=CStr(S1)’S1变量值转换为字符“437.327”四、用户定义的数据类型P258应用过程中可以包括一个或多个标准数据类型的数据类型,即是用户定义数据类型。用户自定义类型可以是任何用Type语句定义的数据类型。用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。用户定义数据类型可以在Type…EndType关键字间定义,定义格式为:Type[数据类型名]<域名>As<数据类型><域名>As<数据类型>…EndType例如:P258例8.2例8.2实现方法如下:在数据库窗口模块对象下,单击“新建”按钮—输入8.2定义学生信息数据类型—选择“插入”菜单中“过程”—在对话框中选择“子程序”、“公共的”或“函数”,输入过程名为cg1—在过程中添加语句—单击“运行”按钮—打开“立即窗口”查看结果。补充:*在自定义数据类型时应注意:Type语句只能在模块级使用。可以在Type前面加上Public或Private来声明自定义数据类型的作用域,这与其它VBA基本数据类型相同。声明自定义数据类型的域时,如果使用字符串类型,最好定长字符串,如N1AsString*l0。使用Type语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。可以使用Dim、private、Public、ReDim或Static来声明用户自定义类型的变量。五、数组P259

1.数组的声明和引用数组:表示一组具有相同数据类型的值,称为数组员素变量。数组变量由变量名和数组下标构成。数组的声明:一般使用Dim语句声明(定义)数组。数组格式:Dim数组名([下标1下限to][下标1上限][AS数据类型],[下标2下限to][下标2上限])…)[AS数据类型]说明:默认数组下标从零开始。例,DimS1(3)AsInteger数组变量S1,共有4个元素,S1(0)、S1(1)、S1(2)、S1(3)。可使其从其他值开始。在模块顶部添加OptionBase

语句。例如,OptionBase1DimS1(3)AsInteger声明数组变量S1共有3个元素,下标起始值为1,S1(1)、S1(2)、S1(3)。也可用To子句对数组下标声明例如,DimS1(1to3)AsIntegerDimx(5to7)Aslong分别指定S数组的下标从1开始,X数组下标从5开始。多维数组:多个下标。VBA中最多可到60维。例如:DimN(1To2,1To3)AsSingle声明了一个2乘3的两维数组,有6个数组元素。可将其想像成矩阵,第一个参数为行号,第二个为列号。S(1,1),S(1,2),S(1,3),S(2,1),S(2,2),S(2,3)动态数组定义和使用的方法:P259Dimnew1()anlong…ReDimnew1(3,3)

数组引用实例:数组元素的引用:数组元素用数据名和下标引用。例如 DimS(6)AsInteger,N1AsInteger ForN1=0to6 S(N1)=20 Next六、数据库对象变量P259Form!窗体名称!控件名称.属性名称Reports!报表名称!控件名称.属性名称七、变量标识命名法则p260八、符号常量p260常量就是在应用程序的运行中不能改变的数值固定的资料对象。在用VBA进行程序设计时,使用常量可以增加代码的可读性和可维护性。如果在代码中经常用到一些很长的数字,它们没有明确的意义,并且很难记忆。这时,可以给这样的数字取一个有实际意义的名字,以取代程序中的具体数值。另外,如果要对数字进行修改,只要修改常量的值就可以了,而不需要对所用到的数值一一进行修改。符号常量可以用Const语句创建,并且可在模块中使用。

常量与变量一样也有3个范围级别:过程级别、私有模块级别和公共模块级别。在声明常量的同时,也设定了它的范围。用户可以使用Const语句定义常量,语法结构如下:[作用范围]Const常量名[As数据类型]=表达式例如:PublicConstPI=3.1415926′声明一个在所有模块中使用的常量PI说明:这个值不能像上面例子中的变量那样改变或赋予新值。

如果用户在定义常量时不加Public或Private,则默认为私有。其中常量名的命名规则与变量名的命名规则是一样的。语句中的“表达式”是由数值常量或字符串常量以及运算符组成的。九、系统常量p260系统定义常量包括3个:True、False和Null。用户可以在Access中的任何地方使用系统定义的常量。十、内部常量p261内部常量是Access或VBA的一部分,内部常量是在Access或VBA的类型库中定义的。Access或VBA包含了许多预定义的内部常量。所有的内部常量都包含在类型库中,只有在模块中引用了常量,被引用的常量才会装到内存中。要查看这些常量可以使用Access中的对象浏览器。十一、运算符p2611.算术运算符算术运算符是常用的运算符,用来执行简单的算术运算。VBA提供了8个算术运算符,表列出了这些算术运算符。在8个算术运算符中,除取负(-)是单目运算符外,其它均为双目运算符。加(+),减(-),乘(*),取负(-)、取余MOD等。在立即窗口练习p261例如中运算2.关系运算符与关系表达式

关系运算符也称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(True)或假(False)。用关系运算符连接两个算术表达式所组成的表达式叫做关系表达式。VBA提供了6个关系运算符,如表所示。在立即窗口练习关系运算符中例如运算3.逻辑运算符p262逻辑运算也称布尔运算,由逻辑运算符连接两个或多个关系式,组成一个布尔表达式。VBA的逻辑运算符有与AND、或OR、非NOT运算。在立即窗口练习例如中运算。4.连接运算符p262字符串连接(&)用来连接多个字符串(字符串相加)。例如:A$="My"B$="Home"C$=A$+B$运算结果为:变量C$的值为"MyHome"。在VBA中,“+”既可用作加法运算符,还可以用作字符串连接符,但“&”专门用作字符串连接运算符,其作用与“+”相同。在有些情况下,用“&”比用“+”可能更安全。P262例如题,在立即窗口练习例如中运算。十二、表达式和优先级p263表达式:将常量和变量用各种运算符连接在一起构成的式子称为表达式优先级:同一表达式中,运算进行的先后顺序由运算符,表8.6十三、常用标准函数p2631数学函数绝对值函数Abs(<表达式>)取整函数Int(<表达式>)Fix(<表达式>)自然指数函数Exp(<数值表达式>)自然对数函数Log(<数值表达式>)开平方函数Sqr(<数值表达式>)三角函数Sin(<数值表达式>)Cos(<数值表达式>)Tan(<数值表达式>)产生随机数函数Rnd(<数值表达式>)2字符串函数字符串检索函数InStr([Start,]<Str1>,<Str2>[,Compare])字符串长度检索函数Len(<字符串表达式>或<变量名>)字符串截取函数Left(<字符串表达式>,<N>)Right(<字符串表达式>,<N>)Mid(<字符串表达式>,<N1>,[N2])生成空格字符串函数Space(<字符串表达式>)大小写转换函数Ucase(<字符串表达式>)Lcase(<字符串表达式>)删除空格函数LTrim(<字符串表达式>)RTrim(<字符串表达式>)Trim(<字符串表达式>)3日期/时间函数获取系统日期和时间DateTimeNow截取日期分量函数Year(<表达式>)Month(<表达式>)Day(<表达式>)4类型转换函数字符串转换字符代码函数Asc(<字符串表达式>)字符代码转换字符函数Chr(<字符代码>)数字转换成字符串函数Str(<数值表达式>)字符串转换成数字函数Val(<字符串表达式>)计算机程序的执行控制流程,有三种基本结构:顺序结构、分支结构、循环结构。顺序结构:其中的语句按排列的顺序依次执行。条件判断结构:按照给定的条件进行判断,再按判断的结果分别执行程序中不同部分的代码。循环结构:按照条件反复执行一系列语句。根据循环的条件,可以把循环结构分为两类: ◆当型循环结构:当条件成立时,反复执行语句。 ◆直到型循环结构:反复执行语句直到条件成立为止。8.3.4VBA程序流程控制语句语句组2语句组1TF语句组2条件语句组2FT条件语句组TF条件语句组一、语句书写规定VBA语句:一条语句是一个完整的命令。可包含关键字、运算符、变量、常数和表达式。1.语句可分为三类:声明语句:命名和定义过程、变量、数组以及常数。可执行语句:执行赋值、判断、循环等各种操作,运行过程或函数等。赋值语句:给变量或常量指定一个值或表达式。

例如,Y=2*X+1Lable1.caption=“学号:”2.书写规定:通常一个语句占一行,一行写不下时使用续行符“_”将语句下在下一行。例如:MsgBoxPrompt:="Hello"&myVar,_ Title:="GreetingBox",_ Buttons:=vbExclamation使用“:”将几个不同的语句分隔开,写在一行中。例如:DimString1AsStringString1="Howareyou!"可以写成下面一行:

DimString1AsString:String1="Howareyou!"3.注释语句通常,一个好的程序一般都要求有注释语句。这对程序的维护有很大的好处。即使是程序员自己,如果没有注释语句,在一段时间以后,要读懂自己的程序,也并非一件容易的事。运行过程时忽略注释。在VBA程序中,注释可以通过以下两种方式实现:使用Rem语句,格式为:Rem注释语句使用“’”号,格式为:’注释语句

例如:Rem声明两个变量DimString1,String2String1="Howareyou":Rem同行中在语句之后用Rem注释,需要用冒号隔开。String2="Goodbye“′如果用撇号注释,则无需使用冒号。例如,DimMyStr1,MyStr2MyStr1=“Hello”:Rem在语句后用:隔开MyStr2="Goodbye"'这也是一条注释二、声明语句用于命名和定义常量、变量、数组和过程通过定义的位置(局部、模块或全局)和使用的关键字(Dim,Public,Global或Static)决定这些内容的生命周期和作用范围三、赋值语句用于为变量指定一个值或表达式格式:[Let]变量名=值或表达式例:P269注意赋值号左边只能是变量名,不能是常量或表达式不能在一条赋值语句中,同时给多个变量赋值

四、标号和GoTo语句GoTo语句用于实现无条件跳转格式:GoTo标号…标号:…注意:标号名字从代码的最左列开始写GoTo语句是早期Basic语言中常用的流程控制语句,现在的语言不提倡使用,因为过多会导致程序控制和调试都比较困难,VBA中主要用于错误处理五、条件语句p270

VBA提供了如下几种分支语句:

1.简单分支语句(If…Then语句)If测试指定的条件,如果条件为真(True),则执行Then后面的语句。格式1:If条件表达式Then语句格式2:If〈条件表达式〉Then语句块EndIf注意:If…Then的单行格式不用EndIf语句。但如果条件表达式的值为真(True)时要执行多行代码,则必须使用多行If…Then…EndIf语法。PrivateSubxyz()DimxAsInteger,yAsIntegerx=InputBox("请输入x值")Ifx>=0Theny=2*x+1MsgBox"y:"&yEndIfEndSub2.选择分支语句(If…Then…Else)If…Then语句的变形是If…Then…Else语句,它在条件为True时,执行一段语句,而在条件为False时,执行另一段语句。If…Then…Else语句的语法如下:格式3:If条件表达式Then语句块1Else语句块2EndIf例tj1

PrivateSubxyz()DimxAsInteger,yAsIntegerx=InputBox("请输入x值")Ifx>=0Theny=2*x+1Elsey=1EndIfMsgBox"y:"&yEndSub例:Ifa>bThenDebug.PrintaElseDebug.Printb例CJ1:如果学生的分数在60分以上,定为“及格”,否则定为“不及格”。Substud()DimsAsIntegers=Val(InputBox("请输入学生成绩"))Ifs>=60ThenMsgBox("及格")ElseMsgBox("不及格")EndIfEndsubIF语句的嵌套:多重选择

格式4If条件语1Then语句组1elseif条件2Then语句组2elseif条件3Then语句组3……elseif条件nThen语句组nelse语句组n+1endif例TJ2:商品数量求折扣

PublicSubsl()Dim数量AsSingle,折扣AsSingle数量=InputBox("数量")If数量>100Then折扣=0.9ElseIf数量>200Then折扣=0.85ElseIf数量>300Then折扣=0.8ElseIf数量>400Then折扣=0.75ElseIf数量>500Then折扣=0.7Else折扣=1EndIfMsgBox"数量:"&数量MsgBox"折扣为"&折扣EndSub例:Ifs>=90ThenB="A"Debug.Print"成绩为优"ElseIfs>=80ThenB="B"Debug.Print"成绩为良"ElseIfs>=70ThenB="C"Debug.Print"成绩为中"ElseIfs>=60ThenB="D"Debug.Print"成绩为合格"ElseIfs>=60ThenB="E"Debug.Print"成绩为差"Endlf进一步练习:1.创建一个过程,使用输入语句接收托运行李的重量,计算托运行李收费:托运行李重量<=25公斤,收费标准是每公斤1元,行李重量大于25公斤,超出部分按每公斤2.5元计算。2.创建一个过程,使用输入语句接收成绩的分数,根据成绩分数显示不同的奖学金等级情况:成绩<60,奖学金等级0,60-69奖学金等级3,70-79奖学金等级2,>=80分奖学金等级1。SelectCase选择结构:根据表达式求值结果,选择执行几个分支中的一个。格式:

SelectCase<表达式>Case<比较列表1><语句1>[Case<比较列表2>][<语句1>]……[CaseElse[<语句n>]]EndSelect2.SelectCase语句p271例:重编前例 数量=InputBox(“数量”) SelectCase数量div100Case0 折扣=1Case1 折扣=0.9Case2 折扣=0.85Case3 折扣=0.8Case4 折扣=0.75 CaseElse 折扣=0.7 EndSelect表达式列表的形式有三种:●Case表达式例如Case10,15。作用是判断测试表达式的值是否为10或15。●Case表达式To表达式。例如Case10To15。作用是判断测试表达式的值是否在10至15之间。●CaseIs比较运算符表达式例如CaseIs<15。作用是判断测试表达式的值是否小于15。在Case子句中可以使用多重表达式。例如:Case10To15,20To25,30,31只要测试表达式的值与Case子句中列出的某一个值相同,条件就成立。系统就会执行该Case后面的语句块。If和SelectCase语句的应用:If语句适合执行多个条件都执行的情况,而SelectCase在多个条件式中只能执行一个满足条件的语句块。例如:根据计算机成绩和英语成绩显示是否有奖励的过程程序只能使用If语句:Ifjsj>=80thenMsgbox“计算机成绩为”&jsjEndifIfyy>=80thenMsgbox“英语成绩为”&yyEndifMsgbox“奖励100元”练习中的第2题:使用输入语句接收成绩的分数,根据成绩分数显示不同的奖学金等级情况适合使用SelectCase语句结构。1)iif函数Iif函数是if语句的一种特殊格式,它的使用语法如下:iif(条件式,表达式1,表达式2)iif函数的作用是,先判断条件,如果条件为真,返回表达式l的值;否则返回表达式2的值。例如:c=IIf(a>b,a,b)语句执行后,c为a和b中的最大值。2)Switch函数Switch(条件式1,表达式1[,条件式2,表达式2…条件式N,表达式N])P272例8.7y=Switch(x>0,1,x=0,0,x<0,-1)3)Choose函数Choose(索引式,选项1[,选项2,…[,选项N]])P273例8.8y=Choose(x,5,m+1,n)条件综合例题P273例8.9六、循环语句P275

1.For…Next循环2.Do…Loop循环3.While…wend循环For…Next循环结构:将一段程序重复执行指定的次数,其中使用一个计数变量,统计执行的次数。格式:

For循环变量=初值To终值[Step步长][<语句组1>] ExitFor[<语句组2>] Next[循环变量]功能:执行For语句时,“循环变量”设为“初值”;执行到Next语句时,步长加(减)到循环变量上;再执行For语句时,若“循环变量”超过“终值”则循环结束。步长:未指定值时默认为1。若“步长”是正数或0,则“初值”应大于等于“终值”,否则,“初值”应小于等于“终值”。1.For…Next语句P275例1:Forintx=lTol00Step2s=s+

intxIfs>50ThenExitForNext例2:计算累加程序:S=1+2+3+4….+x,并输出结果。方法:接收一个累加的终值,确定一个循环变量,循环变量有2个作用(加数和循环变量),确定一个存储累加和的变量。使用循环计算,最后输出显示结果。DimsAsinteger,xAsintegerx=InputBox(“请输入累加的终值")Forx=lToxs=s+xNext想一想:计算=1+3+5+7…x或2+4+6+8…x如何编写?例3:计算累乘程序S=1*2*3*4…X:方法:接收一个累乘的终值,确定一个循环变量,循环变量有2个作用(乘数和循环变量),确定一个存储累乘积的变量。使用循环计算,最后输出显示结果。DimSAsinteger,IAsintegerx=InputBox(“请输入累加的终值")S=1ForI=lToxS=S*INext注意:累乘的乘数和乘积变量的初值为1。例4:P275例8.10

格式1:先判条件是否成立,再开始循环。 Do[{While|Until}<条件>] [<语句>] [ExitDo] [<语句>] Loop例1:计算S=1+2+3+4…+100DimsAsinteger,xAsinteger,nAsinteger‘x=InputBox(“请输入累加的终值")n=1Dowhilen<=xs=s+n

n=n+1‘修改循环控制变量,改变加数值loop2.DoWhile…Loop和Do…LoopWhileDowhile…Loop循环结构:先判断后执行,有可能一次也不执行。While关键字用于指明条件为真时执行循环体内语句;Until当条件为假时,执行循环体内语句。例2:DimsAsinteger,xAsinteger,nAsinteger‘x=InputBox(“请输入累加的终值")n=1DoUntiln>xs=s+n

n=n+1‘修改循环控制变量,改变加数值loop例3:P276例8.11格式2:先循环,再判条件是否成立。Do[<语句>][ExitDo][<语句>]Loop[{While|Until}<条件>]说明:Do…Loopwhile循环结构:先执行后判断,循环语句至少执行一次;While关键字用于指明条件为真时执行循环体内语句;Until当条件为假时,执行循环体内语句。DimsAsinteger,xAsinteger,nAsinteger‘x=InputBox(“请输入累加的终值")n=1Dos=s+n

n=n+1‘修改循环控制变量,改变加数值loopwhilen<=xDimsAsinteger,xAsinteger,nAsinteger‘x=InputBox(“请输入累加的终值")n=1Dos=s+n

n=n+1‘修改循环控制变量,改变加数值loopUntiln>x说明:在循环体中应有使修改循环变量的语句,如n=n+1。否则,循环条件始终不发生改变,循环将永远不会结束,即死循环。[ExitDo]的应用计算s=1*2*3*…DimSAsinteger,IAsintegerx=InputBox(“请输入累加的终值")S=1:I=1DoifI>xexitdoendifS=S*II=I+1loopwhileI<=x3.While…Wend循环P277While循环结构如下:While条件循环体WendWhile循环是当型循环,与DoWhile…Loop结构类似;当条件满足时执行循环体,只是在循环体内不能使用ExitDo语句。例如:Whiles<=l00s=s+l0WendFT条件表达式循环体8.3.5过程调用和参数传递P277一、过程调用1.子过程的定义和调用可以用Sub语句声明一个新的子过程。其语法格式如下:[Public|Private][Static]Sub子过程名([<参数>])[As数据类型][<子过程语句>][ExitSub][<子过程语句>]EndSub

使用Public关键字可以使该过程适用于所有模块中的所有其他过程;用Private关键字则使该子程序只适用于同一模块中的其他过程。子过程调用形式:Call子过程名([<实参]>)或子过程名([<实参]>)。例如,编写一个计算加减乘除的过程,代码如下:PrivateSubcompute(aAsSingle,bAsSingle)c1=a+bc2=a-bc3=a*bc4=a/bPrint"c1=";c1,"c2=";c2,"c3=";c3,"c4=";c4,EndSub这是一个Sub子过程,它有两个单精度型的参数a和b,参数的值均由调用程序传过来,然后在Sub过程中进行运算和输出。例如,compute(18,3)或callcompute(18,3)

在过程中可以对给出的条件进行测试,并根据测试的结果确定是否退出过程,如果要退出过程则使用ExitSub子句,例如可以修改上面的compute过程,代码如下:PrivateSubcompute(aAsSingle,bAsSingle)Ifb=0thenExitSubEndIfc1=a+bc2=a-bc3=a*bc4=a/bPrint"c1=";c1,"c2=";c2,"c3=";c3,"c4=";c4,EndSubP277例8.12例:编写将2个数按大小排序的子过程。2.函数过程的定义和调用过程使用起来很方便,但如果需要返回参数,就要用到函数了。在VBA中,提供了大量的内置函数。比如字符串函数Mid()、统计函数Max()等。在编程时直接引用就可以了,非常方便。但有时我们需要按自己的要求定制函数,比如我们需要计算半径为R的圆的面积A:A=3.14*R^2。但是,圆的半径是不确定的。我们不可能为每一个不同半径的圆来写上相似的一段代码。这时就需要使用函数。用Function语句可以声明一个新函数、它接受的参数、返回的变量类型及运行该函数过程的代码。其语法形式如下:[Public|Private][Static]Function函数名([<参数>])[As数据类型][<函数语句>][函数名=<表达式>][ExitFunction][<函数语句>\][函数名=<表达式>]EndFunction对函数使用Public关键字,则所有模块的所有其他过程都可以调用它。用Private关键字则使这个函数只适用于同一模块中的其他过程。当把一个函数说明为模块对象中的私有函数时,就不能从查询、宏或另一个模块中的函数调用这个函数。包含Static关键字时,只要含有这个过程的模块是打开的,则所有在这个过程中无论是显式还是隐含说明的变量值都将被保留。

可以在函数名末尾使用一个类型声明字符或使用As子句来声明被这个函数返回变量的数据类型。如果没有,则VBA将自动赋给该变量一个最合适的数据类型。例如:求圆面积函数:PublicFunctionA(RAsSingle)AsSingleA=3.14*R^2′求半径为R的圆的面积AEndFunction这样,一个面积函数就完成了。调用它时非常方便。如果要计算半径为5的圆的面积,只要调用函数A:A(5)或者编写一个全局过程调用函数过程。函数过程可以被查询、宏等调用。对于数据库中的计算控件特别有用。PublicFunctionA(RAsSingle)AsSingleA=3.14*R^2EndFunctionPublicSubmj()DimRAsSingleR=InputBox("请输入半径值")msgboxA(R)EndSub二、参数传递P278过程定义时可以设置一个或多个形参,之间用逗号分隔。形参得完整定义格式P278调用过程的程序所带参数为实参,实参可以是一个固定的值(常量)例如5,可以是一个表达式5*2,可以是一个已经赋值的变量例如:j被调过程中一定要有接收实参的形参变量,可以是一个定义了的数据类型,一定要与实参的变量类型一致。8.3.6常用操作方法P280一、打开和关闭窗体二、打开和关闭报表三、输入框四、消息框五、VBA编程验证数据六、计时事件一、打开窗体或报表1)命令格式

DoCmd.OpenForm

formname_[,view][,filtername][,wherecondition][,datamode][,windo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论