第7章模块与VBA编程2_第1页
第7章模块与VBA编程2_第2页
第7章模块与VBA编程2_第3页
第7章模块与VBA编程2_第4页
第7章模块与VBA编程2_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、AccessAccess数据库数据库应用技术应用技术授课教师:授课教师:联系电话:联系电话:E-Mail:第第7章章 模块与模块与VBA编程编程 7.1 模块的基本概念模块的基本概念 7.2 创建模块创建模块 7.3 VBA编程基础编程基础 7.4 VBA的流程控制的流程控制 7.5 过程调用和参数传递过程调用和参数传递 7.6 VBA代码调试与运行代码调试与运行 7.7 VBA编程综合实例编程综合实例 第第7章章 模块与模块与VBA编程编程 1. 模块的基本概念模块的基本概念【1】类模块;类模块;【2】标准模块标准模块【3】将宏转换为模块将宏转换为模块2. 创建模块创建模块【1】创建创建VB

2、A模块:在模模块:在模块中加入过程,在模块中执块中加入过程,在模块中执行宏。行宏。【2】编写事件过程:键盘编写事件过程:键盘事件,鼠标事件,窗口事件,事件,鼠标事件,窗口事件,操作事件和其他事件。操作事件和其他事件。3.调用和参数传递调用和参数传递4.VBA程序设计基础:程序设计基础:【1】面向对象程序设计的基面向对象程序设计的基本概念本概念【2】VBA编程环境:进入编程环境:进入VBE,VBE界面界面【3】VBA编程基础:常量,编程基础:常量,变量,表达式变量,表达式【4】VBA程序流程控制:程序流程控制:顺序控制,选择控制,循顺序控制,选择控制,循环控制环控制【5】VBA程序的调试:设程序

3、的调试:设置断点,单步跟踪,设置置断点,单步跟踪,设置监视点监视点教学重点7.1 模块的基本概念模块是Access系统中的一个重要对象,它以VBA(Visual Basic for Applications)为基础编写,以函数过程(Function)或子过程(Sub)为单元的集合方式存储。Access中,模块分为类模块和标准模块两种类型。 7.1.1 类模块 窗体模块和报表模块都属于类模块,它们从属于各自的窗体或报表。窗体模块和报表模块通常都含有事件过程,而过程的运行用于响应窗体或报表上的事件。 窗体模块和报表模块具有局部特征,其作用范围局限在所属窗体或报表内部 ,而生命周期则是伴随着窗体或报

4、表的打开而开始,关闭而结束。 7.1.1 类模块类模块 7.1.2 标准模块 标准模块一般用于存放供其他Access数据库对象使用的公共过程 ,通常安排一些公共变量或过程供类模块里的过程调用.标准模块中的公共变量和公共过程具有全局特性,其作用范围在整个应用程序里,生命周期是伴随着应用程序的运行而开始,关闭而结束。在Access系统中,根据需要可以将设计好的宏对象转换为模块代码形式。7.1.2 标准模块标准模块 7.2 创建模块创建模块 过程的概念:过程是模块的单元组成,由VBA代码编写而成。过程分两种类型:Sub子过程和Function函数过程。 7.2.1 在模块中加入过程在模块中加入过程

5、模块是装着VBA代码的容器,一个模块包含一个声明区域,且可以包含一个或多个子过程(以Sub开头)或函数过程(以Function开头)。 一、子过程的定义 :子过程是一系列由子过程是一系列由 Sub 和和 End Sub 语句所包含起来的语句所包含起来的VBA语句,只执行一个或多个操作,而语句,只执行一个或多个操作,而不返回数值。不返回数值。 7.2.1 在模块中加入过程在模块中加入过程 定义格式如下:Sub 子过程名程序代码End Sub其命名与变量命名规则相同子过程开始子过程结束完成某个功能的子过程体 内部不能再定义其他过程 ,但可用Call命令调用其他过程“SubSub子过程名子过程名”和

6、和“End SubEnd Sub” 必不可少必不可少7.2.1 在模块中加入过程在模块中加入过程 二、函数过程的定义 :函数过程通常情况下称为函数,是一系列由 Function 和 End Function 语句所包含起来的 VBA语句。Function 过程和 Sub 过程很类似,但函数过程可以通过函数名返回一个值。定义格式如下:Function 函数过程名 As 返回值类型程序代码End Function 函数开始函数结束函数体内不允许定义其他的函数过程和子过程,可直接引用函数过程名,并由接在函数过程名后的括号所辨别 7.2.1 在模块中加入过程在模块中加入过程 三、创建过程:子过程或函数

7、过程既可以在标准模块中建立,也可以在窗体模块中建立。方法:在VBE中执行“插入过程”菜单命令7.2.1 在模块中加入过程在模块中加入过程 7.2.2 在模块中执行宏 在模块的过程定义中,使用Docmd对象的RunMacro方法,可以执行设计好的宏。其调用格式为:Docmd.RunMacro MacroName ,RepeatCount ,RepeatExpression其中,MacroName表示当前数据库中宏的有效名称;RepeatCount可选项,用于计算宏运行次数的整数值;RepeatExpression可选项,数值表达式,在每一次运行宏时进行计算,结果为False时,停止运行宏。 7.

8、2.2 在模块中执行宏在模块中执行宏 7.3 VBA编程基础编程基础 VBA(Visual Basic for Application)是Microsoft Office内置的编程语言,是根据VB简化的宏语言。计算机的程序设计语言有很多,如Fortran, Cobol, Basic, Pascal, C, C+, Java, Delphi等,它们各有特点和不及适用领域。其中,Basic最初是专门针对初学者而设计的程序开发语言,因其问世后广泛被使用,再加上Windows的流行,微软公司开发了VisualBaisc作为Windows环境下的应用程序开发工具。VBA是根据Visual Basic的简

9、化宏语言,其基本语法、词法与Visual Basic基本相同,简单易学,采用的是一种面向对象的程序设计方法。与Visual Basic不同的是,VBA不是一个独立的开发工具,一般被嵌入到像Word, Excel, Access这样的宿主软件中,与其配套使用,从而实现程序开发功能。7.3 VBA编程基础编程基础 7.3.1 面向对象程序设计基本概念 一、对象和类 1.对象是现实世界中个体或事物的抽象表示,是由描述事物状态的有关数据和对这些数据可以进行的相关操作共同组成的。2.每一个对象有自己的属性、方法和事件,用户就是通过属性、方法和事件来处理对象的。 7.3.1 面向对象程序设计基本概念面向对

10、象程序设计基本概念 5.类是对象的抽象,而对象是类的具体实例,每个对象由类来定义。 6.DoCmd对象 :DoCmd对象的主要功能是通过调用Access内置的方法,在VBA中实现某些特定的操作 。二、事件过程对象在识别了所发和的事件后执行的代码叫事件过程。因此想要让系统响应某个事件,就要将响应事件所要执行的程序代码添加入相应的事件过程。7.3.1 面向对象程序设计基本概念面向对象程序设计基本概念 7.3.2 VBA的编程环境的编程环境 一、Visual Basic编辑器(VBE)如下图7.3所示。VBE提供了完整的开发和调试工具。窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口等组成。7.3

11、.2 VBA的编程环境的编程环境 7.3.2 VBA的编程环境的编程环境 一、Visual Basic编辑器(VBE)如下图7.3所示。VBE窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口等组成。7.3.2 VBA的编程环境的编程环境 代码窗口代码窗口立即窗口立即窗口工程窗口工程窗口属性窗口属性窗口二、启动VBE的常用三种方法(书中介绍5种)2.通过事件过程启动3.通过“模块”对象启动1.通过菜单启动 模块对象新建工具宏Visual Basic编辑器 7.3.2 VBA的编程环境的编程环境 VBA代码是由语句组成的,一条语句就是一行代码例7.1 新建一个窗体并在其上放置一个命令按钮和一个标

12、签,单击命令按钮后,标签的标题显示“欢迎学习VBA程序设计语言”。三、三、VBE环境中编写环境中编写VBA代码代码7.3.2 VBA的编程环境的编程环境 7.3.3 基本数据类型 字符型(String,) 、字节型(Byte ) 、整型 (Integer,%)、长整型 (Long,&)、单精度型(Single,!) 、双精度(Double,#)小数型 (Decimal ) 、货币(Currency,)逻辑(Boolean ) 、日期型 (Date ) 、对象型 (Object ) 、变体型(Variant) 7.3.2 VBA的编程环境的编程环境 7.3.4 常量、变量、数组定义:什么

13、是常量、变量?常量或变量的命名规则 :(1)常量或变量的名字须以字母或汉字开头,后跟字母、汉字、数字或下划线组成的序列,长度不能超过255个字符;(2)不能使用VBA中的关键字命名常量或变量;(3)VBA不区分常量或变量名中的大小写字母,如XYZ,xyz,Xyz等均视为相同名字。 7.3.2 VBA的编程环境的编程环境 常量:在程序运行的过程中其值不会发生变化 VBA支持4 种类型的常量:直接常量、符号常量、固有常量和系统定义常量。 变量:在程序运行的过程中其值是可以发生变化 变量定义:Dim AS显示声明变量隐式声明变量变量的应用范围局部范围模块范围全局范围7.3.2 VBA的编程环境的编程

14、环境 变量的生存周期: 变量第一次(声明时)出现到消失时所持续的时间 . 数组: 是一个由相同数据类型的变量构成的集合,数组在使用之前应该加以声明,说明数据元素的类型、数组大小、数组的作用范围。固定大小数组的声明:Dim 数组名(下标下界 To 下标上界)As 数据类型,如Dim Array(8) As Integer , Static Array(19, 19) As Integer 7.3.2 VBA的编程环境的编程环境 动态数组的声明 :A)先声明空数组及数据类型,如Dim Array( ) As Integer B)在使用数组前再声明数组大小,如ReDim Array(10) 7.3.

15、2 VBA的编程环境的编程环境 7.3.5 运算符与表达式运算符与表达式 VBA编程语言提供了多种类型的运算符完成对数据的各种运算和处理,主要包括4种类型的运算符: 1. 算术运算符及算术表达式2. 连接运算符与字符串表达式3. 关系运算符与关系运动表达式4. 逻辑运算符与逻辑表达式7.3.5 运算符与表达式运算符与表达式 表达式的运算顺序 表达式的运算顺序由高到低为:函数运算、算术运算、关系运算、逻辑运算。 优先级高的运算先进行,优先级相同的运算依照从左向右的顺序进行 优先级高 低高低算数运算符连接运算符比较运算符逻辑运算符指数运算()字符串连接(&)相等(=)Not负数(-)字符串

16、连接(+) 不等()And乘法和除法(*、/)小于()求模运算(Mod)小于等于(=)7.3.5 运算符与表达式运算符与表达式 7.3.6 常用标准函数常用标准函数 VBA提供了大量几个内部标准函数,可方便地完成许多操作。使用形式:函数名(参数1,参数2,参数3,)函数的调用要注意三个要素,即函数名、函数的参数和函数返回值。其中函数名必不可少,函数的参数放在函数后面的圆括号中,参数可以是常量、变量或表达式。VBA的内部函数大体可分为:转换函数、数学函数、字符串函数、时间/日期函数和随机函数。7.3.6 常用标准函数常用标准函数 随机函数和数组的应用:编程产生10个随机数,求其中的最大值、最小值

17、、平均值。7.3.6 常用标准函数常用标准函数 7.3.7 输入输出函数和过程输入输出函数和过程 VBA与用户之间的直接交互是通过InputBox()函数、MsgBox()函数和MsgBox过程进行的。1. InputBox(prompt,title,default,xpos,ypos) 函数InputBox()产生一个作为输入数据界面的对话框,等待用户输入数据或按下按钮,并返回所输入的内容,返回值是String类型的。注意:每执行一次InputBox()只能输入一个数据例7.3 输入任意10个数,分别求奇数和偶数的和。7.3.7 输入输出函数和过程输入输出函数和过程 2.MsgBox(msg

18、,type,title) 函数MsgBox()函数可以向用户传送信息,并可通过用户在对话框上的选择,接收用户所作的响应,返回一个整型值,以决定其后的操作。 7.3.7 输入输出函数和过程输入输出函数和过程 2.MsgBox(msg,type,title) 函数MsgBox()函数可以向用户传送信息,并可通过用户在对话框上的选择,接收用户所作的响应,返回一个整型值,以决定其后的操作。 7.3.7 输入输出函数和过程输入输出函数和过程 3.MsgBox Msg,type,title过程MsgBox语句没有返回值,因此常被用于简单的信息显示 .例如:执行下列代码后,显示的消息框如图7.19所示。Pu

19、blic Sub 消息框()MsgBox 欢迎进入本系统, 1, 销售系统End Sub 7.3.7 输入输出函数和过程输入输出函数和过程 7.4 VBA的流程控制的流程控制 VBA程序是由大量语句构成,一个语句是能够完成某项操作的一条命令。VBA程序语句按其功能不同分为2类:一是声明语句,用于变量、常量、过程定义二是执行语句,用于执行赋值操作、调用过程、实现各种流程控制l执行语句又分为3种结构:顺序结构、分支结构、循环结构7.4.1 顺序控制顺序控制 1. VBA语句书写规则 lVBA源代码不区分字母的大小写 l语句书写自由,同一行上可以写多个语句,语句间用冒号“:”分隔;l一个语句可分为若

20、干行书写,但须在行后加续行标志(空格加下划线“_”)。程序的注释以两种方式实现。即使用Rem语句和单引号( )。l 7.4.1 顺序控制顺序控制 2. VBA的基本语句的基本语句 v1)赋值语句格式:目标操作符目标操作符= =源操作符源操作符v2 2)注释语句)注释语句 以关键字以关键字RemRem开头引导的注释内容,可添加到程开头引导的注释内容,可添加到程序任意位置。序任意位置。 以以 引导的注释内容,可直接出现在语句后面。引导的注释内容,可直接出现在语句后面。v3)结束语句格式:End当在程序中执行当在程序中执行End语句时,将终止当前程序,语句时,将终止当前程序,重置所有变量,并关闭所有

21、数据文件重置所有变量,并关闭所有数据文件7.4.1 顺序控制顺序控制 Private Sub Area() Rem 定义长、宽两个变量 Dim length As Single 长方形的长 Dim height As Single 长方形的宽 Rem 通过输入框输入长与宽,并将值变成数值型 length = Val(InputBox(请输入长方形的长) height = Val(InputBox(请输入长方形的宽) a = length * height 计算面积 MsgBox Str(a), vbDefaultButton1, 面积End Sub7.4.1 顺序控制顺序控制 7.4.2 条件

22、语句条件语句 1. 单行结构条件v格式:If Thenelse &解释:如果成立,则执行,否则执行若没有否则,则else 可省略。7.4.2 条件语句条件语句 2. 块结构条件格式:If Then ElseIf Then ElseIf Then Else End If比如:判断考试成绩比如:判断考试成绩(score)如果如果0score60,则显则显示示“不及格不及格”如果如果60=score70,则则显示显示“及格及格”如果如果70=score80,则则显示显示“中等中等”如果如果80=score90,则则显示显示“良好良好”如果如果90=score=100,则显示则显示“优秀优秀”

23、7.4.2 条件语句条件语句 3. 多分支结构格式:Select Case Case Case Case Else End Select通常是变量或常量,可以是数值或字符串表达式可称为“测试表达式”的值域7.4.1 条件语句条件语句4.SelectCase语句多路分支结构一般格式为:Select Case Case Case Case Else End Select例7.5 某物流公司货物运费的折扣规则是:250公里内没有折扣;250750公里,折扣5%;7501500公里,折扣8%;15002500公里,折扣10%;2500公里以上,折扣15%。编程输入运费单价、运输货物重量和运输距离,计算

24、货物的运费。7.4.1 条件语句条件语句5. IIf函数和Choose函数vIIf( 条件,True部分 ,False部分)&当条件为真时,返回True部分的值;当条 件为假时,返回False部分的值。 条件是逻辑表达式或关系表达式。如: y=IIf( x=0,0,1/x)Choose( 变量,值为1的返回值,值为2的返回值,值为n的返回值)7.4.1 条件语句条件语句程序设计:例7.- 给出a,b,c的值,问它们能否构成三角形的3边。如能构成三角形,计算出此三角形的面积。7.4.1 条件语句条件语句7.4.3 循环结构1. for next格式: For =to step Exit

25、ForNext &循环变量必须为数值类型&循环次数= Int(终值-初值)/步长)+1例:求自然数n的阶乘.例7.6 一只猴子摘了一堆桃子,它每天吃当天桃子数的一半,每次又忍不住多吃了一个,这样到 第10天时,只有一个桃子可吃了,请计算猴子最初共有多少个桃?(结果为1534)。7.4.3 循环结构循环结构2. While Wend 格式While 条件 循环体Wend说明:如果条件为真,则执行循环体.若条件一直为真则构成死循环.例:求100以内自然数的和.例7.7 显示100到999的所有水仙花数(水仙花数是指一个三位数各位数字的立方和等于该数字本身,如:153=13+53+3

26、3,所以153是一个水仙花数)。7.4.3 循环结构循环结构3.Do Loop格式vDo While | Until Exit Do LoopvDo Exit Do Loop While | Until 例7.8 求自然对数e 的近似值, e=1+1/1!+1/2!+1/3!+1/n! , 要求 1/n! 精确到 0.00001。7.4.3 循环结构循环结构7.5 过程调用和参数传递过程调用和参数传递一个模块中通常包含一个或多个过程,模块功能的实现是通过过程的调用来实现的。在本节中将介绍子过程与函数过程的调用及参数传递。将程序分解成若干个较小的逻辑部件,可以简化程序的设计,称这些部件为过程。使

27、用过程有两大优点:(1)过程把一个大的程序分成离散的逻辑单元,程序的编写调试较为容易。(2)一个程序中的过程,只需稍作修改,便可以成为另一个程序的构件。7.5.1 过程调用1.函数过程调用格式:函数过程名( 实参列表 )2.子过程的调用格式:Call 子过程名 ( ) or子过程名例7.10 利用函数计算下列数学表达式的值:M!/(m-n)!n!7.5.1 过程调用过程调用7.5.2 参数传递 一、形式参数的定义多个形参之间用逗号分隔。其中每个形参的一般定义如下:ByValByRef 形参名 () As 类型名u(1)按地址传递(ByRef)形参与实参指向同一个内存单元.即如果在被调用过程中改

28、变了该变量值,其变化就会反映到调用过程中的那个变量.u(2)按值传递(ByVal)被调用过程获得该变量的独立副本.即如果改变被调用过程中该变量的值不会影响调用过程中该变量原来的值.7.5.2 参数传递参数传递关于实参向形参的数据传递要注意以下两点:(1)实参可以是常量、变量或表达式。(2)实参与形参的数目、类型以及顺序,都应一致。如果在过程的定义时形参用ByVal声明,说明此参数为传值调用;若形参用ByRef声明,说明此参数为传址调用;没有说明传递类型,则默认为传址调用。例7.11 创建有参过程p1(),通过主调过程p2()被调用,观察参数值的变化。7.5.2 参数传递参数传递二、调用时的参数

29、传递7.6 VBA代码调试与出错处理代码调试与出错处理调试和出错处理是程序设计中一个重要环节。VBA提供了一套调试工具和错误处理方法。导致应用程序中出错的两个原因: 在运行应用程序时某个条件可能会使原本正确的代码产生错误。例如,如果代码尝试打开一个不存在的数据表,就会出错。 代码可能包含不正确的逻辑,导致不能运行所需的操作。例如,如果在代码中试图将数值被0除,就会出现错误。7.6.1 VBA程序的错误类型程序的错误类型 一、错误类型 VBA程序运行时,可能产生的错误可以分为三种类型。 编译错误/运行错误/逻辑错误二、对错误的处理(设置错误陷阱)可以通过On Error语句设置处置方法。该语句有

30、三种形式。 On Error Goto 标号/On Error Resume Next/On Error Goto 0/例7.12 设置错误陷阱示例: 建立一个窗体,添加命令按钮,在命令按钮向导中选择“记录操作”,在操作中选择“添加新记录”,标题为:添加记录,如图7.20所示。7.6.1 VBA程序的错误类型程序的错误类型 7.6.2 程序的调试 调试的重要内容是检查代码的正确性及代码的不同运行环境。代码编辑器中,单击“【视图】【工具栏】【调试】”,即打开了VBE调试工具栏VBA可使用的各种调试工具:调试的主要方法:u设置断点u单步跟踪7.6.2 调试工具的使用调试工具的使用7.7 事件驱动程序设计事件驱动程序设计例如用鼠标单击按钮、窗体和报表的打开等,这就是事件的发生。如何去响应这些事件?其一是使用宏对象来设置事件属性;其二是为某个事件编写VBA代码,即事件过程或事件驱动程序。例如单击按钮时运行某段程序,单击按钮就是驱动程序运行

温馨提示

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

评论

0/150

提交评论