版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章考点1.在模块中加入过程(Sub过程和Function过程)2.面向对象程序设计的概念(掌握属性、事件、方法)3.VBA编程基础(理解变量、数组和表达式及其优先级)4.VBA流程控制语句(重点掌握条件语句和循环语句)5.过程调用和参数传递6.常用的操作方法和函数(掌握常用函数以及文本框、消息框和计时器的使用)7.VBA数据库编程(掌握VBA数据库编程和SQL语句的使用)7.1 VBA编程环境7.2 VBA模块7.3 VBA程序设计基础7.4 VBA流程控制语句 函数过程和子过程7.5 面向对象程序设计基础-常量,变量7.6过程调用和参数传递7.7 VBA常用操作7.8 VBA用户定义类模块
2、创建和引用 消息框,计时器7.9 VBA程序运行错误处理 Access的表、查询、窗体、报表和数据访问页不能相互驱动和调用。使用模块和宏可以将数据库中所有对象联系起来、统一管理,形成完整的数据库系统。 宏的局限性: 只能处理一些简单操作 对数据库对象的处理能力很弱(例如表,查询) 模块是Access的数据库中的一个重要对象。 模块是由VBA(Visual Basic for Applications)语言编写的程序的集合。是以函数过程函数过程(Function)或子过程(Sub)为单元的集合方式存储。作为模块主要是为了多次调用。 模块可分成两种基本类型:类模块和标准模块 窗体模块和报表模块是类
3、模块的典型例子。 窗体和报表模块通常都含有事件过程,该过程用于响应窗体或报表中的事件,可以使用事件过程来控制窗体或报表的行为,以及它们对用户操作的响应。 窗体模块和报表模块中的过程可以调用标准模块中已经定义好的过程。 窗体模块和报表模块具有局部特性,窗体模块和报表模块具有局部特性,其作用局限在所属窗体或报表内部,而生命周期则是伴随着窗体的打开而开始、关闭而结束。 标准模块一般用于存放供其它Access数据库对象使用的公共过程。 在Access中,可以通过创建新的模块对象而进入其代码设计过程。 标准模块通常安排一些公共变量或过程供类模块里的过程调用。在各个标准模块内部也可以定义私有变量和私有过程
4、仅供本模块内部使用。 标准模块中的公共变量和公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。窗体或报表中的宏()在设计视图中打开窗体或报表;()工具菜单宏“将窗体的宏转换为Visual Basic代码”或“将报表的宏转换为Visual Basic代码”;()单击“确定”按钮在模块中执行宏在模块中执行宏 DoCmd.RunMacro MacroNameDoCmd.RunMacro MacroName 一、在模块中加入过程 模块是由过程组成 过程:将VBA语言的声明和语句集合在一起,作为一个命名单位的程序段(执行特定功能的语句块)。它包含许多语句
5、和方法,以执行特定的操作或计算数值。 过程的二种类型: sub子过程子过程:执行一系列操作的过程。 function函数过程函数过程:特殊的、能返回值的函数过程。 区别方法:能否返回值,是过程和函数之间最大的区别区别方法:能否返回值,是过程和函数之间最大的区别。 也称为Sub过程,是执行一项操作的过程。 子过程没有返回值子过程没有返回值,子程序以关键字Sub开始,并以End Sub语句作为结束。 可以引用过程名调用,或使用关键字Call 子过程格式: Sub 子程序名() 程序代码 End Sub考试中的重点内容,也是常见的内容考试中的重点内容,也是常见的内容在窗体中有两个文本框分别为Text
6、1和Text2,一个命令按钮Command1,编写如下两个事件过程:Private Sub Command1_Click( ) a = Text1.Value + Text2.Value MsgBox aEnd SubPrivate Sub Form_Load( ) Text1.Value = “” Text2.Value = “”End Sub程序运行时,在文本框Text1中输入78,在文本框中Text2输入87,单击命令按钮,消息框中输出的结果为 【 】 函数过程:也称为Function过程,是一种能够返回具体值的过程,返回的值可以在表达式中使用。 函数过程以关键字Function开始,并
7、以End Function语句作为结束。 不能使用call调用,直接引用函数过程名,函数名后要加括号。 函数格式: Function 函数名称() as 返回值的数据类型 程序代码 End Function在窗体中有一个命令按钮Command1,编写事件代码如下:Private Sub Command1_Click()Dim s As Integers = p(1) + p(2) + p(3) + p(4)debug.Print sEnd SubPublic Function p (N As Integer)Dim Sum As IntegerSum = 0For i = 1 To NSum
8、= Sum + 1Next iP = SumEnd Function打开窗体运行后,单击命令按钮,输出的结果是A)15 B)20 C)25 D)351+(1+2)+(1+2+3)+ (1+2+3+4)二、在模块中执行宏 在模块的定义过程中,使用Docmd对象的RunMacro方法可以执行设计好的宏Docmd.RunMacro MacroName ,RepeatCount,RepeatExpression1、在Access中,如果要处理具有复杂条件或循环结构的操作,则应该使用的对象是 A 窗体 B模块模块 C宏 D报表2、Sub过程和Function过程最根本的区别是A Sub过程的过程名不能返
9、回值,而Function过程能通过过程名返回值B Sub过程可以使用Call语句或直接使用过程名调用,而Function过程不可以C 两种过程参数的传递方式不同D Function过程可以有参数,Sub过程不可以 VBA是微软Office套件内置的编程语言,语法与VISUAL BASIC兼容。7.3.1 面向对象程序设计的基本概念 1. 对象 在VBA程序设计时,界面上的所有事物都可以称为对象。每一个对象都有自己的属性、方法和事件。用户是通过属性、方法和事件来处理对象的。2. 属性和方法属性和方法:描述了对象的性质和行为。引用:对象名.属性 或 对象名.方法参数名表对象的属性 例:label0
10、.caption=“学生成绩表”对象的方法 例: text1.setfocus (获取焦点)获取焦点)如若是text2.setfoucs,则显示的是光标在文本2那里DoCmd对象:有许多方法。如Openform 打开窗体 例如:DoCmd.Openform “学生登记” RunMacro 运行宏操作等, 例如:Docmd.RunMacro “mac1”3.事件和事件过程 事件就是窗体或者报表中对象可以识别的动作 1、下列过程的功能是:通过对象变量返回当前窗体的Recordset属性记录集引用,消息框中输出记录集的记录(即窗体记录源)个数。 Sub GetRecNum () Dim rs as
11、Object Set rs=Me.Recordset Msgbox _ End Sub 程序空白处应填写的是(2009.9)A Count B rs.Count C RecordCount D rs.RecordCount2、Access的窗体或报表时间可以有两种方法来响应:宏对象和事件过程。一、VBA编程环境工具栏工程窗口属性窗口代码窗口立即窗口二、进入VBE编程环境三、VBE环境中编写VBA代码例7.1 新建窗体并添加一个按钮,单击该按钮,弹出对话框显示信息 (1)新建一个窗体添加一个名为cmdTest的按钮 (2)按钮属性事件单击()代码生成器(3)确定编写代码 第一张图片 msgx信息
12、提示(4)ALT+F11返回窗体界面运行窗体,查看结果四、程序语句书写原则1.语句书写规定_ 续航符号:一行写不完一句程序时用来续航: 在一行中分隔几句程序语句2.注释:Rem 注释语句 (变成绿色)(变成绿色) 注释语句一、标准数据类型取值范围默认值0 2550True或FalseFalse-32,767 32,7670-2,147,473,647 2,147,473,6470 负数:-3.402723E37-1.401297E-450正数:1.401297E-453.402723E37负数:-1.79769313E307 -4.94065647E-324 0正数:4.94065647E-3
13、24 1.79769313E307 -922337203675477.5707 922337203675477.57070100年1月1日 9999年12月31日0任何对象引用空0 65,535空字符串1.数值型数据的符号: 整型 %、长整型 &、单精度型 !、双精度型 # 例:10.33# 100 % 2.布尔型数据的值: (逻辑表达式)(逻辑表达式) 两种值:True和False,其他数值类型转换为布尔型时,其他数值类型转换为布尔型时,0变成变成False,其他值均为,其他值均为True。布尔型转换为其他型时,布尔型转换为其他型时,False成为成为0,True成为成为-1。3.日期型变量
14、的值: 日期值用#括起来,如 #2004/11/23# 4. Variant (变体)数据类型: 若未给变量指定数据类型,Access自动指定其为Variant类型。 Variant可包含除定长String数据及用户定义类型之外的任何种类的数据。也可包含Empty、Error、Nothing 及Null特殊值。 用户自定义类型可以是任何用Type语句定义的数据类型。用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。 用户定义数据类型定义格式为: Type 数据类型名 As As End Type例7.3 定义一个学生信息的数据类型 在数据库窗口模块对象下
15、,单击“新建”按钮输入定义学生信息数据类型选择“插入”菜单中“过程”在对话框中选择“子程序”、“公共的”或“函数”,输入过程名为cg1在过程中添加语句单击“运行”按钮打开“立即窗口”查看结果可使用With关键字简化重复的部分三、数据库对象数据类型数据库:Database 连接:Connection窗体:Form 报表:Report控件:Control 查询:Query表: Table 命令:Command结果集: DAO.Recordset ADO.Recordset(记录的集合)(记录的集合) 变量指程序运行时值会发生变化的数据(值和数据类型的变化)。变量名可随意定义,但不能与VBA关键词冲
16、突,变量的值可按需变化。变量必须先声明数据类型,然后才能使用。VBA变量大小写不敏感。 常量就是在应用程序的运行中可直接引用的实际值,其值在程序运行中不会变化。VBA有3种常量:直接常量、符号常量和系统常量直接常量、符号常量和系统常量一、变量的声明 每一个变量都必须在其使用的过程中事先声明。 声明变量的作用:指定变量的数据类型和作用域。 未声明的变量默认为Variant类型。若要求在使用变量前必须声明,可进行设置。 声明一个变量用Dim语句,它的语法格式如下: Dim 变量名 As 数据类型在VBA的代码中,过程、变量及常量的名称有如下规定:(l)最长只能有255个字符。(2)必须用字母开头。
17、(3)可以包含字母、数字或下划线字符“”。(4)不能包含标点符号或空格。(5)不能是Visual Basic关键字。关键字是那些在Visual Basic中用作语法的一部分的词,包括预定义语句(如If和Loop)、函数(如Len和Abs)和运算符(如Or和Mod )等等VBA声明变量有2种方式:1. 显示声明Dim MYName As StringDim s1 As String *50 说明定长字符串变量可存放50字符Dim x As Integer或 Dim x% 可在同一行内声明多个变量。例如,Dim t1 As Boolean, D1 As Integer2条语句是等价的2.隐式声明
18、Dim x ,y x,y为变体Variant变量 Dim NewVar=527 NewVar为Variant变量,值是527 问题:如何确定以上声明的x,y和NewVar类型呢? 二、强制声明在在VBA编程窗口编程窗口 选择:工具选择:工具| 选项选项数据库所有数据库所有新模块新模块中自中自动添加动添加Option Explicit语语句,功能为:强制对模句,功能为:强制对模块中的所有变量进行显块中的所有变量进行显式声明。式声明。也可直接将语句输入到也可直接将语句输入到模块的声明节。模块的声明节。强制对模块中的所有变量进行显式声明的设置。强制对模块中的所有变量进行显式声明的设置。三、变量的作用
19、域以及静态变量 变量的范围确定了能够使用该变量的那部分代码。变量的作用范围是在模块中声明确定的。声明变量时可以使用三种不同的作用范围:Public、Private、Dim。 变量的作用域决定了这个变量是被一个过程使用还是一个模块中的所有过程使用,还是被数据库中的所有过程使用。1. 局部范围(Local) 过程级变量只有在声明它们的过程中才能被识别,也称它们为局部变量。用Dim或者Static关键字来声明它们。例如: Dim V1 As Integer 或 Static V1 As Integer 在整个应用程序运行时,用Static声明的局部变量中的值一直存在,但是只有在过程中才能使用。而用D
20、im声明的变量只在过程执行期间才存在。2. 模块范围(Module) 模块级变量对该模块的所有过程都可用,但对其他模块的代码不可用。可在模块顶部的声明段用Private关键字声明变量,从而建立模块级变量。 例如; Private V1 As Integer 在模块级,在模块级,Private和和Dim之间没有什么区别,但之间没有什么区别,但Private更好些,因为很容易把它和更好些,因为很容易把它和Public区别开来,区别开来,使代码更容易理解。使代码更容易理解。3. 全局范围 为了使模块级的变量在其他模块也有效,可用Public关键字声明变量。全局变量中的值可用于应用程序的所有过程。和所
21、有模块级变量一样,也在模块顶部的声明来声明公用变量。 例如:Public V1 As Integer 用户不能在过程中声明公用变量,而在模块中声明的变量可用于所有模块。四、数据库对象变量 Forms!窗体名称!控件名称.属性名称 Report!报表名称!控件名称.属性名称 例 Forms!学生成绩!姓名=“S001” (姓 名含有空格则用姓 名)表示 Dim txtName as Control Set txtName=Forms!学生管理!姓名 txtName=“犀利哥” 数组是在程序设计中,为了处理方便,把具有相同类型的若 干变量按有序的形式组织起来的一种形式。这些按序排列 的同类数据元素
22、的集合称为数组 数组的声明: Dim 数组名(下标下限 to 下标上限)AS 数据类型 默认数组下标从零开始。 Dim S1(3) As Integer 数组变量S1,共有 4 个元素,S1(0)、 S1(1)、 S1(2)、 S1(3) 多维数组:多个下标。例如: Dim N(1 To 2, 1 To 3) As Single声明了一个2乘3的两维数组,有6个数组元素。可将其想像成矩阵,第一个参数为行号,第二个为列号。 S(1,1),S(1,2),S(1,3),S(2,1),S(2,2),S(2,3)动态数组定义和使用的方法:Dim new1() an long ReDim new1(3,3
23、) 六、变量标识命名法则七、符号常量 作用范围 Const 常量名 As 数据类型表 达式 例如:Public Const PI=3.1415926 声明一个在所有模块中使用的常量PI七、系统常量 系统定义常量包括3个: True、False和Null。用户可以在 Access中的任何地方使用系统定义的常量。 九、内部常量 内部常量是Access或VBA的一部分,内部常量是在Access或VBA的类型库中定义的。Access或VBA包含了许多预定义的内部常量。所有的内部常量都包含在类型库中,只有在模块中引用了常量,被引用的常量才会装到内存中。要查看这些常量可以使用Access中的对象浏览器。7
24、.3.5 常用标准函数 函数都有返回值,函数的参数和返回值都有特定的数据类型。一、算术函数1.绝对值函数 Abs() 返回表达式的绝对值 Abs(-3)=3 2.取整函数取整函数 Fix() 返回整数部分 Fix(3.25)=3 Fix(-3.25)=-33.向下取整函数向下取整函数 Int() 返回小于表达式的第一个整数 Int(3.25)=3 Int(-3.25)=44.四舍五入函数四舍五入函数 Round( ,) 按照指定小数位数返回四舍五入的结果 Round(3.255,1)=3.3 Round(-3.255,0)=-3 5.平方根函数 Sqr() 返回数值的平方根 Sqr(9)=3
25、Sqr(2)=1.414 Sqr(-9)=?6.随机数函数随机数函数 Rnd(). 返回一个包含随机数的Single 若要生成指定范围的随机整数,请使用下面的公式: Int(upperbound - lowerbound + 1) * Rnd + lowerbound)二、字符串函数1.字符串检索函数 InStr(Start, , Compare) 返回Str2在Str1中最早出现的位置(整数),若找不到,则返回0 如果指定了Compare则必须指定Start Compare=0 用二进制比较(区分大小写) =1 不区分大小写 =2 基于数据库中包含的信息比较思考? InStr(ababd,a
26、b) s1=ababd s2=ab ?Instr(s1,s2) s1=“ababd” s2=“ab” ?Instr(s1,s2)切记:2.求字符串长度函数Len(或变量名)Dim str as String * 10Str=“123”i=12Debug.Print Len(“12345”)Debug.Print Len(12)Debug.Print Len(i)Debug.Print Len(str)3.字符串截取函数 Left(,)从左边起截取N个字符 Left(“abc”,2)Right(,)从左边起截取N个字符 Right(“abc”,2)Mid(,N2)从左边第N1个位置开始截取N2个
27、字符 Mid(“abc”,2,1)4.生成空格字符函数 Space() 返回空格 Space(3) 5.大小写装换函数大小写装换函数 Ucase() 将字符串中的小写转换成大写 Ucase(“abCDef”) Lcase() 将字符串中的大写转换成小写 Lcase(“abCDef”)6.删除空格函数 Ltrim() 删除左边空格 Ltrim(“ abc”) Rtrim() 删除右边空格 Rtrim(“abc ”) Trim() 删除左右两边空格 Trim(“ abc ”)三、日期/时间函数1.获取系统当前日期和时间函数 Date() 返回当期系统日期 Time() 返回当前系统时间 Now()
28、 返回当前系统日期和时间2.截取日期分量函数 Year()返回表达式中的年 Month()返回表达式中的月 Day()返回表达式中的日 WeekDay(,N) 返回周几的数值返回周几的数值(周日为周日为1) N代表从哪天开始算一周的开始代表从哪天开始算一周的开始3. 截取时间分量函数 Hour()返回023 Minute()返回059 Second()返回059 例:T=#10:40:11# Hour(T)返回10 Minute(T)返回40 Second(T)返回114.日期/时间增量函数 DateAdd(,) 返回表达式加上增量值的时间 DateAdd(“yyyy”,60,#2011-11
29、-11#) 返回2071-11-11 Dateadd(“n”,3,#10:20:30#) 返回10:23:305.日期/时间间隔函数 Datediff(,W1,W2)D1=#2003-5-27#D2=#2004-4-29#Datediff(“yyyy”,D1,D2) 返回1,间隔1年Datediff(“q”,D1,D2) 返回3,间隔3季度Datediff(“m”,D2,D1) 返回-9,间隔9月6.时间分割函数DatePart(,w1,w2)D=#2004-2-29#DatePart(“yyyy”,D) 返回2004DatePart(“d”,D) 返回29DatePart(“ww”,D) 返
30、回107.指定时间函数DateSerial(,)表达式1: 年表达式2: 月表达式3: 日DateSerial(2011,12,30) 返回#2011-12-30#DateSerial(2011+60,7-2,0)返回#2071-5-31#1.转换成ASCII码函数码函数 Asc() Asc(“abc”)返回第一个字符的ASCII码值972.将ASCII码转换成字符函数 Chr(ASCII码) Chr(65)返回A3.将数值装换成字符串函数 Str(). Str(99)返回” 99”第一个位置为符号位,如果是整数则第一个位置为空格 Str(-6)返回”-6”4.将字符串转换成数值函数 Val(
31、)Val(“16”) 返回16Val(“a”) 返回什么?5.字符串转换成日期函数 DateValue(“字符串表达式”)DateValue(“February 29,2004”) 返回2004-2-29DateValue(“2011 12 6”) 返回2011-12-6DateValue(2011 12 6) 返回值是什么?6.判断空值函数 Nz(表达式或字段属性值,规定值) 若表达式或字段属性值是数值且是空值,则返回0或规定值,否则返回本身 若表达式或字段属性值是字符串且是空值,则返回”或规定值,否则返回本身Nz(null) 返回”Nz(a) 返回什么?Nz(“b”) 返回什么?一、运算符
32、在VBA中,运算符可以分成4种类型的运算符:算术运算符关系运算符逻辑运算符连接运算符1.算术运算符 算术运算符是常用的运算符,用来执行简单的算术运算。VBA提供了7个算术运算符,表列出了这些算术运算符。 在7个算术运算符中,除取负(-)是单目(单元)运算符外,其它均为双目(双元)运算符。加(+),减(-),乘(*),取负(-)、取余MOD等。加法 2+10=12减法 2-10=-7乘法 2*10=20浮点数除法 2/10的结果是 0.2整数除法 210的结果是 0 整数除法的结果舍去小数斜杠 slash 向前倒反斜杠 backslash / 向后倒指数运算(乘幂) 210=1024取模运算取模
33、运算(求余运算求余运算)10 mod 2 的结果是 02 mod 10 的结果是 211.4 mod 3.5 结果是 3 取模运算前会将小数位四舍五入取模运算前会将小数位四舍五入 dim myvalue myvalue =10 mod 4 myvalue=-12.7 mod -5 (四舍五入后再运算) myvalue=(-2)3 myvalue=10.2 4.9 (先舍去小数部分再运算)2. 关系运算符与关系表达式 关系运算符也称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(True)或假(False)。用关系运算符连接两个算术表达式所组成的表达式叫做关系表达式。VB
34、A提供了6个关系运算符,如表所示。3. 逻辑运算符 逻辑运算也称布尔运算,由逻辑运算符连接两个或多个关系式,组成一个布尔表达式。 VBA的逻辑运算符有与 AND 、 或OR、非NOT运算。4. 连接运算符连接运算符 字符串连接(&)和(+)都可以用来连接多个字符串(字符串相加)A$=MyB$=Home A$ & B$ 或者 A$ + B$运算结果为:MyHome。在VBA中,“+”既可用作加法运算符,还可以用作字符串连接符,但“&”专门用作字符串连接运算符,其作用与“+”相同。在有些情况下,用“&”比用“+”可能更安全。? 1+”12”?”1”+”12”二、表达式与优先级 表达式:将常量和变量
35、用各种运算符连接在一起构成的式子称为表达式 优先级:同一表达式中,运算进行的先后顺序由运算符优先级:同一表达式中,运算进行的先后顺序由运算符(1)算术运算符连接运算符比较运算符逻辑运算符 在算术运算符中,mod高于+,- (2)所有比较运算符优先级相同(3)括号优先级最高,可用括号改变优先级 32*5+16-5 mod 7 50 and not 310结果是什么? TRUE1、下列数据类型中,不属于VBA的是A 长整型 B布尔型 C变体型 D指针型2、要显示当前过程中的所有变量及对象的取值,可以利用的调试窗口是A见识窗口 B调用堆栈 C立即窗口 D本地窗口3、语句Dim NewArray(10
36、) As Integer 的含义是A 定义了一个整型变量且初值为10B 定义了10个整数构成的数组C 定义了11个整数构成的数组D 将数组的第10个元素设置成为整数4、InputBox函数的返回值类型是A 数值 B 字符串 C变体 D数值或字符串(视输入的数据而定) VBA程序语句按功能分为两大类型 声明语句:定义变量、常量及过程定义命名 执行语句:赋值操作、调用过程、实现各种流程控制 计算机程序的执行控制流程,有三种基本结构:顺序结构、分支结构(条件判断结构)、循环结构。 顺序结构:其中的语句按排列的顺序依次执行。 条件判断结构:按照给定的条件进行判断,再按判断的结果分别执行程序中不同部分的
37、代码。 循环结构:按照条件反复执行一系列语句 VBA语句书写规定 通常一个语句占一行,一行写不下时使用续行符“_”将语句下在下一行。 例如:MsgBox Prompt =Hello & myVa_ ule 使用“:”将几个不同的语句分隔开,写在一行中。例如:Dim String1 As String String1=How are you! 可以写成下面一行: Dim String1 As String:: String1=How are you! 用于命名和定义常量、变量、数组和过程用于命名和定义常量、变量、数组和过程通过定义的位置(局部、模块或全局)和使用的关通过定义的位置(局部、模块或全
38、局)和使用的关键字(键字(Dim,Public,GlobalDim,Public,Global或或StaticStatic)决定这些内)决定这些内容的生命周期和作用范围容的生命周期和作用范围赋值语句赋值语句用于为变量指定一个值或表达式用于为变量指定一个值或表达式格式:格式:Let Let 变量名变量名= =值或表达式值或表达式例:例:dim txtAge as Integerdim txtAge as Integer txtAge=21 txtAge=21 Debug.Print txtAge Debug.Print txtAge注意注意v赋值号左边只能是变量名,不能是常量或表达式赋值号左边只
39、能是变量名,不能是常量或表达式v不能在一条赋值语句中,同时给多个变量赋值不能在一条赋值语句中,同时给多个变量赋值1IfThen语句(单分支语句)(单分支语句)If 测试指定的条件,如果条件为真(True),则执行Then后面的语句。格式1:If 条件表达式 Then 语句格式2:If条件表达式 Then语句块End If注意:IfThen的单行格式不用End If语句。但如果条件表达式的值为真(True)时要执行多行代码,则必须使用多行IfThenEnd If语法。Private Sub xyz() Dim x As Integer, y As Integer x = InputBox(请输入
40、请输入x值值) If x = 0 Then y = 2 * x + 1 MsgBox y: & y End IfEnd Sub 2. IfThenElse(双分支语句双分支语句) IfThen语句的变形是IfThenElse语句,它在条件为True时,执行一段语句,而在条件为False时,执行另一段语句。 IfThenElse语句的语法如下: 格式:If 条件表达式 Then 语句块1Else 语句块2End If 例例 Private Sub xyz() Dim x As Integer, y As Integer x = InputBox(请输入请输入x值值) If x = 0 Then
41、y = 2 * x + 1 Else y = 1 End If MsgBox y: & yEnd Sub3.IF-Then-ELSEIF3.IF-Then-ELSEIF语句(多语句(多分支结构,或者叫分支结构,或者叫ifif的嵌套)的嵌套)格式格式If 条件语1 Then 语句组1elseif 条件2 Then 语句组2elseif 条件3 Then 语句组3 elseif 条件n Then 语句组nelse 语句组n+1end if 例:商品数量求折扣Public Sub sl() Dim 数量 As Single, 折扣 As Single 数量 = InputBox(数量) If 数量
42、500 Then 折扣 = 0.7 ElseIf 数量 400 Then 折扣 = 0.75 ElseIf 数量 300 Then 折扣 = 0.7 ElseIf 数量 200 Then 折扣 = 0.75 ElseIf 数量 100 Then 折扣 = 0.9 Else 折扣 = 1 End If MsgBox 数量: & 数量 MsgBox 折扣为 & 折扣 End Sub4. Select Case选择结构选择结构:根据表达式求值结果,选择执行几个分支中的一个。 格式: Select Case Case Case Case Else End Select例:重编前例Public Sub
43、sl() (再理解)(再理解)Dim 数量 As Integer数量 = InputBox(数量) Select Case 数量 / 100 Case 0 折扣 = 1 Case 1 折扣 = 0.9 Case 2 折扣 = 0.75 Case 3 折扣 = 0.7 Case 4 折扣 = 0.75 Case Else 折扣 = 0.7 End SelectMsgBox 折扣为 & 折扣 End Sub执行流程:执行流程:匹配表达式匹配表达式1测试表达式测试表达式语句组语句组1语句组语句组2语句组语句组n语句组语句组n+1真真假假匹配表达式匹配表达式2假假真真匹配表达式匹配表达式n是否有是否有
44、else?假假假假假假真真真真= = = =表达式列表的形式有三种: Case 表达式例如Case 10,15。作用是判断测试表达式的值是否为10或15。 Case 表达式 To 表达式。例如 Case 10 To 15。作用是判断测试表达式的值是否在10至15之间。 Case Is 比较运算符 表达式例如 Case Is b, a, b)语句执行后,c为a和b中的最大值。2) Switch函数 (多种选择)多种选择)Switch(条件式1,表达式1,条件式2,表达式2条件式N,表达式N)例 y= Switch(x0,1,x=0,0,x0,-1)3) Choose函数Choose(索引式(从(
45、从1开始)开始),选项1,选项2,选项N)例 y= Choose (x,5,m+1,n)练习:1.创建一个过程,使用输入语句接收托运行李的重量,计算托运行李收费:托运行李重量=25公斤,收费标准是每公斤1元,行李重量大于25公斤,超出部分按每公斤2.5元计算。2.创建一个过程,使用输入语句接收成绩的分数,根据成绩分数显示不同的奖学金等级情况:成绩=70分奖学金等级11.fornext语句 ForNext循环结构:将一段程序重复执行指定的次数,其中使用一个计数变量,统计执行的次数。 格式: For 循环变量=初值 To 终值 Step 步长 循环体 条件语句 Exit For 结束条件语句Nex
46、t 循环变量 功能:执行For语句时,“循环变量”设为“初值”;执行到Next语句时,步长加(减)到循环变量上;再执行For语句时,若“循环变量”超过“终值”则循环结束。 步长:未指定值时默认为1。 若“步长”是正数或0,则“初值”应大于等于“终值”,否则,“初值”应小于等于“终值”。执行流程:v当步长0时,循环条件为:循环变量=终值;v 当步长=终值。循环变量初值循环变量初值循环条件成立?循环条件成立?语句组语句组循环变量增加步长循环变量增加步长真真假假例:For intx= 1 To 100 Step 2 s = s + intx If s 50 Then Exit For Next例:计
47、算累加程序:S=1+2+3+4.+x,并输出结果。方法:接收一个累加的终值,确定一个循环变量,循环变量有2个作用(加数和循环变量),确定一个存储累加和的变量。使用循环计算,最后输出显示结果。计算=1+3+5+7x或2+4+6+7x 如何编写?计算=1*2*3*x呢?Dim s As integer, x As integerx = InputBox(“请输入累加的终值) For x = 1 To x s = s + x Next例7.16 已知斐波那契序列的定义如下:f(0)=0,f(1)=1 ,f(n)=f(n-1)+f(n-2) 当n=2时。编写程序,在立即窗口中显示n为2到10时对应的序
48、列值。代码如下:Sub procedure6()n = 1: f1 = 0: f2 = 1Do While n 10 f = f1 + f2 Debug.Print f f1 = f2: f2 = f: n = n + 1 LoopEnd Sub2.Do whileloop语句语句(先判断,再执行) do while 循环体 条件语句 exit do (强制跳出循环)(强制跳出循环) 结束条件语句 loopv若变量i的初值为8,则下列循环语句中循环体的执行次数为v Do while i=17v i=i+2 这种题型比较多这种题型比较多v loopv A 3 B 4 C5 D 6语句组语句组表达
49、式表达式真真假假3.Do untilloop语句语句(先判断,再执行) do until 循环体 条件语句 exit do 结束条件语句 loop 条件为假执行循环,持续到条件为真结束循环语句组语句组表达式表达式假假真真例:以下程序段输出结果Sub prog4()x=1 再看理解y=4Do Until y4 x=x*y y=y+1Loop Debug.Print xEnd Sub 4.doloop while语句语句(先执行,再判断) do 循环体 条件语句 exit do 结束条件语句 loop while 条件 先执行1次循环,条件为真,继续执行循环语句组语句组表达式表达式真真假假例:以下
50、程序段运行结束后,变量x的值为vSub prog5()vx=2vy=4vDo v x=x*yv y=y+1vLoop While y4vDebug.Print xvEnd Sub5.doloop until语句语句(先执行,再判断) do 循环体 条件语句 exit do 结束条件语句 loop until 条件 先执行1次循环,条件为假,继续执行循环语句组语句组表达式表达式假假真真6.whilewend语句 (不建议用)和do whileloop类似,但是不能使用exit do格式: while 条件式 循环体 wend1.使用GOTO跳转到标号Public Sub aa()Dim s As
51、 Integer, x As Integerx = InputBox(请输入累加的终值) For x = 1 To x s = s + x GoTo a Nexta: 标号,标号要从最左边开始,用:结束Debug.Print sEnd Sub 尽量避免使用goto语句循环嵌套 一个循环的循环体中又包含另一个循环,这种结构称为循环嵌套。包含另一个循环的循环称为外层循环,被包含的循环称为内层循环。 一个循环的循环体中可以嵌套多个循环。 内层循环还可以嵌套另一个循环。 各种循环语句允许相互嵌套。在窗体上有一个命令按钮Command1和一个文本框Text1,编写事件代码如下: Private Sub
52、Command1_Click() dim i,j,x for i=1 to 20 step 2 x=0 for j=1 to 20 step 3 x=x+1 next j next i text1.value=Str(x) End SubA 1 B 7 C 17 D 4007.5.1 过程调用可以用Sub语句声明一个新的子过程。其语法格式如下: Public|PrivateStaticSub 子过程名(As 数据类型) Exit Sub End Sub使用Public关键字可以使该过程适用于所有模块中的所有其他过程;用Private关键字则使该子程序只适用于同一模块中的其他过程。例如编写一个计
53、算加减乘除的过程,代码如下例如编写一个计算加减乘除的过程,代码如下Private Sub compute(a As Single, b As Single) 定义时括号里的叫形参Dim c1 As Single, c2 As Single, c3 As Single, c4 As Singlec1 = a + bc2 = a - bc3 = a * bc4 = a / bDebug.Print c1=; c1, c2=; c2, c3=; c3, c4=; c4End Sub下面是调用这个过程Public Sub aa()Call compute(17, 3) 或者 computer(17,3) 调用时候括号里的叫实参End Sub例7.17 下面编写一个打开指定窗体的子过程 OpenForms().代码如下:Sub openforms(strFormName As String)If strFormName =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下管线探测与施工方案
- 房地产开发项目契约化管理工作方案
- 2024电力施工合同
- PEG1500-Standard-生命科学试剂-MCE
- 面具课程设计方案
- 2024营销咨询服务合同模版
- 基础裱花蛋糕课程设计
- 水利工程灌溉管理方案
- 加油站危机应对策略方案
- 华中师范大学《媒介素养》2021-2022学年第一学期期末试卷
- 2021年大庆精神铁人精神知识竞赛题库
- 浙江泰隆商业银行员工手册
- 审计技能实训教程(喻竹 第二版) 教案全套 1.1-9.2 业务承接与评价-审计底稿归档
- 徐州市2023-2024学年八年级上学期期末数学试卷(含答案解析)
- 生涯发展报告通用模板
- 越人歌音乐分析报告
- 年轻干部优势分析报告
- 社区家庭教育活动指导方案
- 《浮点数计算方法》课件
- 苏州市2022-2023学年高二下学期期中考试化学试题(原卷版)
- 美术新课标培训课件
评论
0/150
提交评论