(中职)Access2010数据库案例教程07-02电子课件_第1页
(中职)Access2010数据库案例教程07-02电子课件_第2页
(中职)Access2010数据库案例教程07-02电子课件_第3页
(中职)Access2010数据库案例教程07-02电子课件_第4页
(中职)Access2010数据库案例教程07-02电子课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、正版可修改PPT课件(中职)Access2010数据库案例教程07_02电子课件第七章 VBA编程基础VBA编程基础项目二 循环结构语句 目录任务实施Task force项目拓展Project development项目测评Project evaluation项目小结Project summary过滤页第一部分Task force任务一 使用循环结构语句实现图书损失计算 任务实施VBA编程基础重点IF语句 IF嵌套语句循环结构语句 难点IF语句IF嵌套语句循环结构语句VBA编程基础任务一 使用循环结构语句实现图书损失计算 VBA编程基础 任务分析 在不少实际问题中有许多具有规律性的重复操作,因

2、此在程序中就需要重复执行某些语句。能够实现该功能的语句称之为循环结构语句。VBA编程基础在图书信息管理过程中往往出现借阅者逾期还书或对在借阅的过程中对图书进行了损坏,为保证学校财产以及对借阅者起到一定的约束,出现以上情况应按照相应的规定进行赔偿。在“图书借阅管理系统”中已经创建完成了“损失计算”窗体,其中包含两个命令按钮:“图书损坏计算”“逾期计算”并包含名称为“L”的标签控件用于显示最终计算结果。 本次任务我们将通过以下任务来学习循环语句结构VBA编程基础1、使用For循环完成图书损坏计算,当单击“图书损失计算”按钮,弹出文本输入框输入损坏图书的数量,提示信息“请输入损坏图书数量” 。单击输

3、入框上确定按钮弹出文本输入框,根据输入的图书损坏数量依次输入损坏图书的定价,提示信息“请输入图书定价” ,最终计算结果作为“L”标签的标题。(损失计算方式为图书定价的2倍)。 损坏数量输入 输入图书定价VBA编程基础最终效果图VBA编程基础2、使用Dowhile循环完成还书逾期损失计算,当单击“逾期计算”按钮,弹出文本输入框输入还书逾期天数,提示信息为“请输入还书逾期天数” ,最终计算结果作为“L”标签的标题。(逾期一天罚款1元)。 逾期天数输入 最终效果图VBA编程基础 知识准备1)输入框(InputBox)输入框函数用于在一个对话框中显示提示信息,等待用户输入数据并按下按钮、返回包含文本框

4、内容的数据信息。它在VBA中是以函数的形式调用使用,其调用格式如下:InputBox(提示信息,标题,默认值,左边距,上边距)VBA编程基础函数返回值为从键盘上输入的数据,类型为文本型“提示信息”是显示在对话中用于提示用户输入的信息;最大长度约为1024个字符。若包含多行内容,可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合(Chr(13)&Chr(10))将各行分隔开来“标题”是对话框标题栏上显示的内容;如果省略该参数,则把应用程序名字放在标题栏中说明VBA编程基础“左边距”是对话框距屏幕左边的距离。若省略该参数,则该对话框在水平方向居中“上边距”是

5、对话框距屏幕上边的距离。若省略该参数,则该对话框在屏幕垂直方向距上边大约1/3位置说明“默认值”是显示在文本框中的内容,在没有其他输入时作为缺省值;若省略该参数,则文本框为空VBA编程基础2)For.Next循环For.Next循环又称为步长循环,一般用于循环次数相对固定的处理中格式For循环变量=初值To终值Step步长循环体Next循环变量VBA编程基础执行流程循环变量取初值循环变量与终值进行比较,以确定循环是否执行步长0 时:若循环变量=终值,循环继续执行步骤,否则退出该循环步长=0 时:若循环变量终值,则一次循环也不执行步长=终值,循环继续执行步骤,否则退出该循环VBA编程基础执行流程

6、执行循环体循环变量加步长(循环变量=循环变量+步长)程序跳转至For.Next 循环的流程图如图7-40所示从流程图可以看出,当步长=0 时循环条件为:循环变量=终值当步长=终值 VBA编程基础VBA编程基础3)Do.loop循环该种结构的循环分为先判断后执行的“当型循环”和先执行后判断的“直到型循环”,下面分别进行介绍。当型循环格式一Do While 循环体1 LoopVBA编程基础执行流程1计算表达式,若表达式为真执行,否则退出循环,执行Loop语句的下一行语句2执行循环体,执行完毕后返回执行。执行流程图如图7-41VBA编程基础当型循环格式二Do Until 循环体1LoopVBA编程基

7、础执行流程1计算表达式,若表达式为假执行,否则退出循环,执行Loop语句的下一行语句2执行循环体,执行完毕后返回执行。执行流程图如图7-42VBA编程基础执行流程图 执行流程图直到型循环VBA编程基础格式一Do循环体1Loop While VBA编程基础执行流程1执行循环体,执行完毕后执行2计算表达式,若表达式为真,则返回,否则退出循环,执行Loop语句的下一行语句。执行流程图如图7-43直到型循环VBA编程基础格式二Do循环体1Loop Until VBA编程基础执行流程1执行循环体,执行完毕后执行2计算表达式,若表达式为真,则返回,否则退出循环,执行Loop语句的下一行语句。执行流程图如图

8、7-44VBA编程基础执行流程图 执行流程图VBA编程基础4)标准数据类型在程序中根据数据的存储和处理方式不同,把数据划分为多种类型。各数据类型的说明如图7-45所示。 关于数据类型的使用说明如下字符串型数据(String)字符串型数据由零到多个字符组成,必须前后用半角的双引号或单引号括住,如“VBA程序设计”VBA编程基础布尔型数据(Boolean)布尔型数据只有两个值:True 和 False。布尔型数据转化为其他类型数据时,True转化为-1,False转化为 0;其他类型数据转化为布尔型数据时,0 转化为False,其他值转化为True日期型数据(Date)日期类型数据必须前后用半角“

9、#”括住,如 #2013-7-22#VBA编程基础变体型数据(Variant)变体类型是一种特殊的数据类型,除了定长字符串类型及用户自定义的类型外,可以包含其他任何类型的数据。变体类型还可以包含Empty、Error、Nothing和Null特殊值。使用时,可以用VarType与TypeName两个函数来检查Variant中的数据VBA中规定,如果没有显示声明或使用符号来定义变量的数据类型,则默认为变体类型。Variant数据类型十分灵活,但使用这种数据类型最大的缺点在于缺乏可读性,也就是无法通过去代码查看其数据类型 VBA编程基础VBA编程基础5)变量在程序运行过程中其值可以发生变化的数据变

10、量可以理解为一个存放数据的容器,在不同的时间可以将不同的数据存放在其中,变量的值就是变量中存放的数据。变量之间为了相互区别,每个变量都有一个名字,通过变量的名字访问变量的值。 VBA编程基础变量的声明格式1:变量名类型说明符 =表达式格式2:Dim变量名as类型标识符说明:变量类型是指变量中数据的类型若省略类型标识,则变量类型为变体类型格式1是隐含声明,格式2是显式声明,程序清晰度高建议使用格式 2可在模块代码窗口的数据声明区域加Option Explicit语句以禁止使用格式 1VBA编程基础 任务实施1、使用For循环完成图书损坏计算,当单击“图书损失计算”按钮,弹出文本输入框输入损坏图书

11、的数量,提示信息“请输入损坏图书数量”。单击输入框上确定按钮弹出文本输入框,根据输入的图书损坏数量依次输入损坏图书的定价,提示信息“请输入图书定价”,最终计算结果作为“L”标签的标题。(损失计算方式为图书定价的2倍)。步骤一:以设计视图打开“损失计算”窗体,进入“图书损失计算” 按钮控件事件代码编辑界面。步骤二:在代码编辑区域输入事件代码。 VBA编程基础Dim a Dim s As Integer Dim b As Integer Dim c As Integer c = Val(InputBox(请输入损坏图书数量) For i = 1 To c s = Val(InputBox(请输入图

12、书定价) a = a + s Next b = Str(a * 2)Me!L.Caption = 损失共计: & b & 元 VBA编程基础代码编辑VBA编程基础步骤三:将“损失计算”窗体切换到窗体视图,查看设计效果,在图书 数量输入框中输入,定价依次输入20、25。 VBA编程基础2、使用Dowhile循环完成还书逾期损失计算,当单击“逾期计算”按钮,弹出文本输入框输入还书逾期天数,提示信息为“请输入还书逾期天数” ,最终计算结果作为“L”标签的标题。(逾期一天罚款1元)。步骤一:以“设计视图”打开“损失计算”窗体,并进入“逾期计 算”按钮代码编辑界面。步骤二:在代码编辑区域输入事件代码。V

13、BA编程基础 Dim m As Integer Dim i As Integer Dim sum As Integer sum = 0: i = 1 m = Val(InputBox(请输入还书逾期天数) Do While i = m sum = sum + 1 i = i + 1 Loop Me!L.Caption = 罚款共计: & sum & 元VBA编程基础代码编辑VBA编程基础输入逾期天数 效果图步骤三:将窗体切换到窗体视图,单击“逾期计算”按钮,在弹出的文 本输入框中输入15,查看设计效果。试练任务 使用直到循环语句完成“逾期计算”按钮单击事件。 过滤页第二部分Project de

14、velopment项目拓展VBA编程基础项目拓展:过程调用与参数传递 前面已经讲了 VBA 的子过程和函数过程两种模块过程及其创建方法。一个子过程或一个函数过程实现一个功能,一个较大的应用程序一般应由若干个过程组成,过程之间需要相互合作才能实现所有功能,这中相互合作机制就是过程之间相互调用。VBA编程基础过程调用是两个过程之间的合作机制,这两个过程分为主调过程和被调过程。程序在主调过程中执行,遇到被调过程,就去执行被调过程,被调过程执行完毕后,返回到主调过程调用被调过程的位置继续往下执行主调过程。过程分为子过程和函数过程,这两类过程其调用形式是不同的。下面结合实例介绍过程调用的形式和参数传递

15、VBA编程基础1、子过程定义格式Public|PrivateStatic Sub子过程名(形参列表)语句序列End Sub说明:(1)Public和Private表示子过程是公用的还是私用的,公用过程可在整个程序范围内被调用,私用过程只能在所定义的模块范围内被调用,本书中方括号括起来内容表示可以省略该部分VBA编程基础1、子过程(2)Static表示该过程中的局部变量是静态变量,在过程被调用后其值仍然保留。静态变量内容请参阅本节变量生命周期部分(3)“形参列表”的一般形式是:ByValue|ByRef 变量名As 数据类型。该短语指明子过程的参数,若省略则为无参过程(4)可以在过程中使用Exi

16、t Sub语句强制退出子过程(5)子过程的调用形式有两种:Call 子过程名()或子过程名 VBA编程基础例1:创建一个名称为“L7_3”的窗体,在窗体中添加一个名称为Command1的命令按钮,然后在窗体的代码窗口中编写如下事件过程:VBA编程基础1程序的执行步骤23VBA编程基础4程序的执行步骤56VBA编程基础执行效果图 执行效果图VBA编程基础2、子过程的参数传递在定义过程时,如果没有指定参数,这种情况称为无参过程。从子过程的定义格式我们可以看到,过程在定义时可以设置一个或多个形参(形式参数的简称),那么形参有什么作用呢?有些问题中,被调过程在执行的时候,可能要用到主调过程中的某些数据

17、,这种些所需数据的获得可以通过形参来实现。定义时含有形参的过程称为有参过程。在有参过程中形参是用来获得所需数据的,究竟是怎么获得的呢?下面作简要介绍VBA编程基础形参的定义格式ByVal|ByRef 形参变量名 As 类型标识各项含义如下ByVal可选项,表示该参数按值传递ByRef可选项,表示该参数按地址传递,ByRef 是VBA中参数的默认传递方式As 类型标识 可选项,指明形参变量的数据类型含参数的过程被调用时,主调过程的调用式必须提供相应的实参(实际参数的简称)VBA编程基础实参可以是常量、变量或表达式实参数目和类型应该与形参数目和类型相匹配传值调用的单向作用和传地址调用的双向作用关于

18、实参向形参数据传递的方式还须了解以下内容VBA编程基础下面就传值调用和传地址调用做进一步分析和说明传值调用定义子过程或函数过程时,参数名前若指定属性ByVal,则参数传递方式为按值传递,称为传值调用。过程调用只是把实参的值单向送给相应形参变量处理,被调过程内形参变量的变化对实参没有影响,数据传递具有单向性,故称为“传值调用”的“单向”作用形式。VBA编程基础下面就传值调用和传地址调用做进一步分析和说明传址调用定义子过程或函数过程时,参数名前若指定属性ByRef,则参数传递方式为按地址传递,称为传址调用。过程调用是把实参的地址送给相应形参变量,被调过程内对形参变量的改变就是对实参变量的改变,也就

19、是说,形参变量的变化对实参有影响,形参值的变化又会影响实参的值。数据传递具有双向性,故称为“传地址调用”的“双向”作用形式。 VBA编程基础实参可以为常量、变量和表达式,什么情况传值调用,什么情况传地址调用呢。从表中我们可以看出仅当实参为变量并且形参为ByRef声明(或省略)时,才能进行传地址调用。 VBA编程基础例2:创建一个名称为“L7_4”的窗体,在窗体中添加一个名称为“Test”的命令按钮,然后在窗体的代码窗口中编写如下事件过程:PrivateSub Test_Click() Dim J As Integer J=5 Call GetData( J ) 调用过程,传递实参J(实际上是J

20、的地址) MsgBoxJ消息框显示J的值为7EndSubSub GetData(ByRef f As Integer)形参f被说明为传地址形式整型量 f =f+2End Sub VBA编程基础当运行Test_Click过程,并调用GetData( )后,由于实参J为变量,并且形参f的声明方式为ByRef ,所以参数传递将会是传地址调用形式,形参f和实参J为同一个变量都是5,执行完GetData后,f 变为7,但是形参变化影响实参,因此实参J也是7。VBA编程基础如果将Call GetData(J)改为Call GetData(5)(或 J+1),现在实参为常量(或表达式),所以尽管形参说明方式

21、为ByRef,参数传递方式为传值,执行完过程GetData后,形参变量不会引起实参J的变化,J依旧是5。 VBA编程基础3、函数过程的调用及其参数传递前面讲的子过程只是实现一些操作,有些时候,需要被调过程执行完毕之后,能够给主调过程带回一个结果,子过程是不能实现这个功能的,VBA中提供了另一类过程来实现这个功能,就是前面提到过的函数过程,下面对函数过程作详细介绍。VBA编程基础定义格式Public|PrivateStatic Function函数过程名(形参表列)As 类型标识符语句序列函数过程名=表达式EndFunctionVBA编程基础(1)关键字Public、Private及Static

22、与子过程中含义相同(2)函数过程返回的值就是函数名的值,“函数名=表达式”的作用是使函数返回表达式的值(3)可以在函数中使用Exit Function语句强制退出函数过程(4)函数过程和子过程的根本区别是函数过程有返回值,而子过程只是执行一系列操作,没有返回值在函数过程中返回值的数据类型由“As类型标识符”短语指明,若不指明VBA将自动赋给该函数过程一个最合适的数据类型说明VBA编程基础(5)函数过程的常用调用形式为:函数过程名(实参)(6)函数过程的参数传递方式与子过程完全相同,不再叙述。由于函数过程会返回一个值,实际上函数过程的上述调用形式主要有两种用法:一是将函数过程返回值作为赋值成分赋

23、予某个变量,其格式为“变量名=函数过程名()”二是将函数过程返回值作为某个过程的实参成分使用说明VBA编程基础例3:有如下过程,执行过程Test后,立即在窗口中的输出结果是:2 3 6 特别指出函数过程可以被查询、宏等调用使用,因此在进行一些计算控件的设计中特别有用。VBA编程基础4、变量作用域和生命周期前面我们讲了变量的定义方式,在例题中我们可以体会到变量存在的意义,但是变量的属性远远不止这些。下面我们将介绍变量的另外两个属性:作用域和生命周期。在VBA中变量定义的位置和方式不同,则它存在的时间和起作用的范围也有所不同,这就是变量的作用域和生命周期。当变量出现时,它被称作是可见的,即可以为变

24、量指定数值,也可以改变它的值,并用于表达式中。某些情况下变量是不可见的。此时若使用变量就会导致错误 。VBA编程基础变量的作用域下面列出了在VBA中变量作用域的三个层次1)局部变量在一个过程内部定义的变量。其作用域为定义它的过程内部。生命周期随着过程的开始而开始,结束而消亡说明:局部变量如果没有赋值,有默认初始值,数字类型变量为0,字符串变量则为空字符串()关键字Static定义的变量为静态变量,静态变量的持续时间是整个模块的执行时间而不是过程的执行时间,过程执行结束后变量没有消失而且其值仍保留,下次调用时延续其值VBA编程基础例4:在窗体中有一个命令按钮(Command1),命令按钮的单击事

25、件过程代码如下,单击三次后消息框的结果3,若将Static改为Dim,单击三次后消息框的结果依旧是1。PrivateSub Command1_Click() Static x As Integer x =x+1 MsgBox xEnd SubVBA编程基础模块变量变量定义在模块的所有过程之外的声明区域(模块窗口的起始位置),模块运行时,对该模块内的所有过程都是可见的。生命周期随着模块的开始而开始,结束而消亡全局变量变量定义在标准模块的所有过程之外的声明区域,运行时对所有模块的所有过程都是可见的说明:当存在同名但是不同作用域的变量,某过程对于这些变量都可访问时,系统会优先访问作用域小的变量。VBA编程基础下面就变量的作用域用下表描述:变量范围声明位置声明关键字作用域局部变量过程内部Dim或Static定义它的过程内部模块

温馨提示

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

最新文档

评论

0/150

提交评论