(本科)第8章 模块与VBA编程ppt课件.pptx
《(本科)第8章 模块与VBA编程ppt课件.pptx》由会员分享,可在线阅读,更多相关《(本科)第8章 模块与VBA编程ppt课件.pptx(138页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第8章 模块与VBA编程Access 2016数据库应用技术教程第8章 模块与VBA编程通过本章的学习,应该掌握以下内容:(1)VBA编程环境。(2)VBA编程的基本概念。(3)VBA程序设计基础。(4)VBA程序控制语句。(5)面向对象程序设计的基本概念。(6)VBA模块的创建、过程调用和参数传递。(7)VBA常用操作。(8)VBA的数据库编程技术。(9)VBA程序调试与错误处理。学习目标8.1 VBA的编程环境 Visual Basic 编辑器(VBE,Visual Basic Editor)是编辑VBA代码时使用的界面。VBE提供了完整的开发和调试工具,可以用于创建和编辑VB
2、A程序。8.1.1 打开VBE窗口在Access 2016中,打开VBE窗口有以下几种方法。n在数据库中,单击“数据库工具”选项卡“宏”组“Visual Basic”。n在数据库中,单击“创建”选项卡“宏与代码”选项组“Visual Basic”。n创建新的标准模块:单击“创建”选项卡“宏与代码”选项组“模块”,则在VBE编辑器中创建一个空白模块。8.1.1 打开VBE窗口n 如果已有一个标准模块,可选择“导航窗格”窗口上的“模块”对象,在模块对象列表中双击选中的模块,则在VBE编辑器中打开该模块。n 对于属于窗体或报表的模块可以打开窗体或报表的设计视图,单击属性窗口的“事件”页中某个事件框右
3、侧的“生成器”按钮 ,打开“选择生成器”对话框,选择其中的“代码生成器”选项即可。8.1.2 VBE窗口 VBE窗口由VBE工具栏、工程窗口、属性窗口和代码窗口组成,如图所示。 “工程”窗口 “属性”窗口 代码窗口 在两句之间输入代码 视图Microsoft Office Access8.1.2 VBE窗口1VBE工具栏VBE工具栏如图所示。8.1.2 VBE窗口2工程窗口工程窗口,也叫工程资源管理器,其中的列表框中列出了在应用程序中用到的模块文件。可单击“查看代码”按钮显示相应的代码窗口,或单击“查看对象”按钮,显示相应的对象窗口,也可单击“切换文件夹”按钮,隐藏或显示对象文件夹。8.1.2
4、 VBE窗口3属性窗口属性窗口中列出了所选对象的各种属性,分“按字母序”和“按分类序”两种格式查看属性。可以直接在属性窗口中编辑对象的属性,这种方法称对象属性的一种“静态”设置方法;此外,还可以在代码窗口内用VBA代码编辑对象的属性,这属于对象属性的“动态”设置方法。为了在属性窗口中显示Access类对象,应先在设计视图中打开对象。8.1.2 VBE窗口4代码窗口单击VBE窗口菜单栏中的“视图”菜单“代码窗口”命令,即可打开代码窗口。可以使用代码窗口来编写、显示以及编辑VBA程序代码。实际操作时,在打开各模块的代码窗口后,可以查看不同窗体或模块中的代码,并且在它们之间做复制以及粘贴的动作。双击
5、工程窗口上的一个模块或类,相应的代码窗口就会显示出来。8.1.2 VBE窗口5立即窗口 单击VBE窗口菜单栏中的“视图”菜单“立即窗口”命令,即可打开立即窗口。立即窗口是用来进行快速计算的表达式计算、简单方法的操作及进行程序测试的工作窗口。在代码窗口中编写代码时,要在立即窗口打印变量或表达式的值,可以使用Debug.Print语句。在立即窗口中使用“?”或“Debug.Print”语句显示表达式的值。8.1.2 VBE窗口6本地窗口 单击VBE窗口菜单栏中的“视图”菜单“本地窗口”命令,即可打开本地窗口。在本地窗口中,可自动显示出所有在当前过程中的变量声明及变量值。8.1.2 VBE窗口7监视
6、窗口 单击VBE窗口菜单栏中的“视图”菜单“监视窗口”命令,即可打开监视窗口。监视窗口用于调试 Visual Basic 过程,通过在监视窗口增添监视表达式的方法,程序可以动态了解一些变量或表达式的值的变化情况,进而对代码的正确与否有清楚的判断。8.2 VBA模块简介 模块是Access数据库中的一个数据库对象,它以VBA语言为基础编写,是 Access数据库中用于保存VBA程序代码的容器。模块由声明、语句和(Sub和Function)过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA程序代码进行组织。 Access有两种类型的模块:标准模块和类模块。8.2.1 标准模块 标准模块包
7、含在数据库窗口的模块对象列表中,包括通用过程和常用过程,这些过程不与Access数据库文件中的任何对象相关联。也就是说,如果控件没有恰当的前缀,这些过程就没有指向Me(当前对象)或控件名的引用。8.2.2 类模块 类模块是包含类定义的模块,包括其属性和方法的定义。类模块有3种基本形式:窗体类模块、报表类模块和自定义类模块,它们各自与某一窗体或报表相关联。8.2.3 VBA代码编写模块的过程 过程是模块的主要单元组成,由VBA代码编写而成。过程分为两种类型:Sub子过程和Function函数过程。8.2.4 将宏转换为模块的过程 使用 Access 2016自动将宏转换为 VBA 模块或类模块。
8、可以转换附加到窗体或报表的宏,而不管它们是作为单独的对象存在还是作为嵌入的宏存在。还可以转换未附加到特定窗体或报表的全局宏。8.2.5 在模块中执行宏 在模块的定义过程中,使用Docmd对象的RunMacro方法,可以执行设计好的宏。其调用格式为:Docmd.RunMacro MacroName,RepeatCount ,RepeatExpression8.3 VBA程序设计基础 VBA是Microsoft Office套装软件的内置编程语言,其语法与Visual Basic编程语言互相兼容。在Access程序设计中,当某些操作不能用其他Access对象实现或实现起来很困难时,就可以利用VBA
9、语言编写代码,完成这些复杂任务。8.3.1 程序书写原则1.程序书写规定 通常将一个语句写在一行中,但当语句较长,一行写不下时,也可以利用续行符(下划线)“_”将语句接续到下一行中。有时需要在一行中写几句代码,这时需要用到冒号“:”将不同的几个语句分开。2.注释语句注释语句用于对程序或语句的功能给出解释和说明。通常一个好的程序都会有注释语句,这对程序的维护有很大的好处。在VBA程序中,注释的内容被显示成绿色文本。可以通过以下两种方式添加注释。(1)使用“”,格式如下:注释语句这种注释语句可以直接放在其他语句之后而无需分隔符。2.注释语句(2)使用Rem语句,格式如下:Rem 注释语句这种注释语
10、句需要另起一行书写,也可以放在其他语句之后,但需要用冒号隔开。3.书写格式 利用空格、空行、缩进使得程序层次分明。8.3.2 数据类型 VBA一般用变量保存计算的结果,进行属性的设置,指定方法的参数以及在过程间传递数值。为了高效率地执行,VBA为变量定义了一个数据类型的集合。在Access里,很多地方都要指定数据类型,包括过程中的变量、定义表和函数的参数等。1标准的数据类型数据类型基本自定义Byte, String$Integer%, Long&, Single!, Double#Date, Currency, Object, VariantBooleanType 类型名 元素名 as 类型
11、End Type2用户自定义的数据类型例如,定义一个学生信息的数据类型如下:Type Student SNo As String SName As String SAge As IntegerEnd Type定义了由SNo(学号)、SName(姓名)、SAge(年龄)3 个分量组成的名为Student的数据类型。8.3.3 变量与常量 变量是指在程序运行过程期间取值可以变化的量。在VBA代码中声明和使用指定的变量来存储值、计算结果或操作数据库中的任意对象。1变量的命名规则(1)变量名必须以英文字母开头,可以包含字母、数字或下划线字符“_”。(2)变量名不能包含空格、句点等字符。(3)变量名的长
12、度不能超过255个字符,且变量名不区分大小写。(4)不能在某一范围内的相同层次中使用重复的变量名。(5)变量的名字不能是VBA的关键字。2变量的声明 变量一般应先声明再使用,变量声明有两个作用,一是指定变量的数据类型,二是指定变量的适用范围。VBA应用程序并不要求在过程中使用变量以前明确地进行声明。如果使用一个没有明确声明的变量,Visual Basic会默认地将它声明为Variant数据类型。变量声明语句:Dim As 2变量的声明【例】在一个语句中声明3个不同类型的变量,其中aaa为布尔型变量,bbb为变体型变量,ccc为日期型变量。Dim aaa As Boolean,bbb,ccc A
13、s Date其中bbb的类型为Variant,因为声明时没有指定它的类型。3变量的作用域变量的作用域确定了能够使用该变量的那部分代码。一旦超出了作用范围,就不能引用它的内容。变量的作用范围是在模块中声明确定的。声明变量时可以使用3种不同的作用范围:Public、Private、Static和Dim。( 1)过程内部使用的变量过程级变量只有在声明它们的过程中才能被识别,也称它们为局部变量。用Dim或者Static关键字来声明它们。例如:Dim V1 As Integer或Static V1 As Integer( 1)过程内部使用的变量在过程结束之前,Dim语句一直保存着变量的值,也就是说,使用
14、Dim语句声明的变量在过程之间调用时会丢失数据。而用Static语句声明的变量则在模块内一直保留其值,直到模块被复位或重新启动。在非静态过程中,用Static语句来显式声明只在过程中可见的变量,但其存活期与定义了该过程的模块一样长。(2)模块内部使用的变量 模块级变量对该模块的所有过程都可用,但对其他模块的代码不可用。可在模块顶部的声明段用Private关键字声明变量,从而建立模块级变量。例如: Private V1 As Integer 在模块级,Private和Dim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。(3)所有模块使用的变量为
15、了使模块级的变量在其他模块也有效,可用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明中来声明公用变量。例如:Public V1 As Integer用户不能在过程中声明公用变量,而在模块中声明的变量可用于所有模块。4数据库对象变量 Access建立的数据库对象及其属性,均可被看成是VBA程序代码中的变量及其指定的值来加以引用。例如,Access中窗体与报表对象的引用格式为:Forms!窗体名称!控件名称.属性名称Reports!报表名称!控件名称.属性名称关键字Forms或Reports分别表示窗体或报表对象集合。感叹号分隔开对象名
16、称和控件名称。“属性名称”部分缺省,则为控件基本操作。5数组数组是在有规则的结构中包含一种数据类型的一组数据,也称作为数组元素变量。数组变量由变量名和数组下标构成,通常用Dim语句来定义数组。(1)一维数组定义格式如下:Dim ( to ) As 缺省情况下,下标下限为0【例】定义一维数组:Dim y (10) As Integer5数组数组的下标也可以不从0开始定义,模块的顶部使用Option Base语句,将第一个元素的默认索引值从0改为其他值。5数组(2)多维数组多维维数指有多个下标的数组。在VBA中可以声明变量最多到60维。【例】Dim T(3,2) As Integer定义了一个二维
17、数组,数组名为T,类型为Integer,该数组有4行(03)3列(02),占据12(43)个整型变量的空间,如图所示。第0列第1列第2列第0行T(0,0)T(0,1)T(0,2)第1行T(1,0)T(1,1)T(1,2)第2行T(2,0)T(2,1)T(2,2)第3行T(3,0)T(3,1)T(3,2)6变量标识命名法则在编写VBA程序代码时,会用到大量的变量名称和不同的数据类型。对于控件对象,可以用VBA的Set关键字将每个命名的控件对象指定为一个变量名称。目前,VB和VBA均推荐使用Hungarian符号法作为命名法则。该方法也被广泛用在C和C+等一些程序中。Hungarian符号法使用一
18、组代表数据类型的码。用小写字母作为变量的第一个字符。例如,代表文本框的字首码是txt,那么文本框变量名为txtName。7符号常量常量是指固定不变的量。VBA的常量包括数值常量、字符常量、日期常量、符号常量、固有常量和系统定义常量等。符号常量是需要声明的常量,用Const语句来声明并设置其值。格式如下:Const 符号常量名称 = 常量值例:Const PI = 3.1415926。8系统常量Access系统内部包含若干个启动时就建立的系统常量,有True、False、Yes、No、On、Off和Null等。在编码时可以直接使用。8.3.4 常用的标准函数在VBA中,除在模块创建中可以定义子过
19、程与函数过程完成特定功能外,又提供了近百个内置的标准函数,可以方便完成许多操作。标准函数一般用于表达式中,有的能和语句一样使用。其使用形式如下:函数名(参数1,参数2,参数3,参数4,参数5)关于常用函数部分,请参见第1章函数部分。8.3.5 运算符和表达式在VBA编程语言中,提供4种类型的运算符:算术运算符、关系运算符、逻辑运算符和连接运算符。表达式是各种数据、运算符、函数、控件和属性的组合,其运算结果是某个确定数据类型的值。表达式能实现数据计算、条件判断、数据类型转换等许多作用。关于运算符和表达式部分,请参见第1章函数和表达式部分。8.4 VBA程序流程控制语句 在VBA程序中,按语句代码
20、执行的顺序可以分为:顺序结构:按照语句顺序顺次执行,如赋值语句、过程调用语句。选择结构:又称为分支结构,根据条件选择执行路径。循环结构:重复执行某一段程序语句。8.4.1 赋值语句赋值语句指定一个值或表达式给变量,通常包含一个等号“=”。语法形式如下:Let = Let通常可以省略。 【例】赋值语句示例。 Dim y As Integer 定义一个变量为整型 y=18 给y赋值18 8.4.2 选择结构语句 在解决一些实际问题时,往往需要按照给定的条件进行分析和判断,然后根据判断结果的不同执行程序中不同部分的代码,这就是选择结构。1.If条件语句(1)单分支结构 格式: If Then 【例】
21、 If xy Then t=x: x=y: y=t 如果x小于y,就把x和y交换1.If条件语句(2)双分支结构 格式:If Then Else End If(2)双分支结构【例】 电费的收费标准是100度以内(包括100度)0.48元/度,超过部分0.96元/度。编写程序,要求根据输入的任意用电量(度),计算出应收的电费。电费收费程序窗体如图所示。Private Sub cmdCalculate_Click( ) Dim y as single 定义一个变量用于表示用电量 Dim p as single 定义一个变量用于表示费用 y = Val(Txt1.Value) Txt1为输入用电量文
22、本框的名称 If y 100 Then p =(w - 100)* 0.96 + 100 * 0.48 Else p = w * 0.48 End If Txt2.Value = p Txt2为显示金额文本框的名称End Sub(3)多分支结构格式:If Then ElseIf Then ElseIf Then Else End If(3)多分支结构【例】成绩等级鉴定窗体如图所示,功能为: 输入一个学生的一门课分数x(百分制),并根据成绩划分等级 当x90时,输出“优秀”; 当80 x90 时,输出“良好”; 当 70 x80 时,输出“中”; 当60 x70 时,输出“及格”; 当 x60
23、时,输出“不及格”。Private Sub CmdOK_Click() 确定命令按钮单击事件 Dim score As single score = val(Txt1.Value) Txt1为输入学生分数文本框的名称 If score = 90 Then Txt2.Value = 优秀 Txt2为显示等级文本框的名称 ElseIf score = 80 Then Txt2.Value= 良好 ElseIf score = 70 Then Txt2.Value = 中 ElseIf score = 60 Then Txt2.Value = 及格 Else Txt2.Value = 不及格 End
24、 IfEnd SubVBA提供了3个函数来完成选择操作(1)IIf函数: IIf(条件式,表达式1,表达式2),该函数是根据条件式的值来决定函数返回值。条件式的值为真(True),函数返回表达式1的值;条件式的值为假(False),函数返回表达式2的值。【例】将变量a和b中值大的量存放在变量Max中。 Max=IIf(ab,a,b)VBA提供了3个函数来完成相应的选择操作(2)Switch函数: Switch(条件式1,表达式1,条件式2,表达式2,条件式n,表达式n),该函数是分别根据条件式1、条件式2,直至条件式n的值来决定函数返回值。【例】根据变量x的值来为变量y赋值。 y=Switch
25、(x0,1,x=0,0,x0,-1)VBA提供了3个函数来完成相应的选择操作(3)Choose函数: Choose(索引式,选项1,选项2,选项n),该函数是根据索引项的值来返回列表中的某个值。索引式值为1,函数返回选项1的值;索引式值为2,函数返回选项2的值;以此类推。【例】根据变量x的值来为变量y赋值。 x=2 : m=5: y=Choose(x,5,m+1,n) 程序运行后,y的值为62. Select Case语句如果条件复杂,分支太多,使用If语句就会显得累赘,而且程序变得不易阅读。这时可使用Select Case语句来写出结构清晰的程序。其语法格式如右图所示:Select Case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科第8章 模块与VBA编程ppt课件 本科 模块 VBA 编程 ppt 课件
限制150内