资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第8章模块对象和VBA编程,讲授4学时 上机2学时,1,总体要求:,理解模块的概念和分类,熟悉VBA编程的界面,熟悉VBA的基本概念和基本语法,掌握模块的创建方法和使用,程序控制语句,VBA程序调试方法,编写事件驱动程序,2,学习重难点:,VBA功能和基础知识,创建模块,创建过程,创建VBA程序,运行VBA程序,3,主要内容:,认识模块对象,模块的创建,VBA编程基础,4,8.1 认识模块对象,定义:模块对象是Access数据库管理系统中的一个独立单元,它实际上是一个由若干个VBA代码组成的过程。可以把模块理解为是装着VBA程序代码的容器。,5,分类:,1类模块,类模块是可以定义新对象的模块。新建一个类模块,也就是创建了一个新对象。模块中定义的过程将变成该对象的属性或方法。类模块可以独立存在,也可以与窗体或报表同时出现。,窗体和报表模块都是类模块,它们各自与某个窗体或报表相关联。,2标准模块,标准模块包括通用过程和常用过程,它们不与任何对象相关联,并且可以在数据库中的任何位置运行。,6,8.2 模块的创建,【例8-1】创建一个能在屏幕上显示“大家好,欢迎走进Access”的提示框的模块,模块名称为“示例模块”。,8.2.1 创建模块与过程,1模块的创建,7,操作要点,( 1)打开数据库。,(2)选择数据库窗口中的“模块”对象。,(3)选择菜单栏上的“工具”“宏”“Visual Basic编辑器”命令,打开Visual Basic编辑器窗口。,(4)选择菜单栏上的“插入”,“模块”命令,Access打开新的模块定义窗口。,(5)在新的模块定义窗口中输入代码,然后保存。,8,Visual Basic编辑器窗口和示例模块运行结果,9,2过程的创建,定义:过程是包含VBA代码的基本单位,是一段相对独立的代码,完成一个特定任务。一个较大的任务通常由多个过程组成。其语法结构如下:,Sub,过程名(形参列表),语句块,EndSub,10,【例8-2】新建模块,实现输入两个整数,并按从小到大排序输出。,11,操作要点:,(1)打开数据库。,(2)选择数据库窗口中的“模块”对象。,(3)单击数据库窗口工具栏上的“新建”按钮,弹出Visual Basic编辑器窗口。,(4)选择菜单栏上的“插入”,“过程”命令,打开 “添加过程”对话框,并按照对话框输入相应信息。,(5)单击工具栏上的“保存”按钮,保存模块。,12,8.2.2 编写事件过程,【例8-3】在“密码输入”窗体中添加一个命令按钮,并为该按钮编写事件过程,检测输入的密码是否正确,如不正确弹出输入密码错误消息框。,13,操作要点:,(1)建立窗体,并命名为“密码输入”,如下图所示。,14,操作要点:,(2)单击“密码检测”按钮控件,弹出一个模块的快捷菜单,如右图所示。在菜单中选择“事件生成器”命令。,15,操作要点:,(3)在弹出的“选择生成器”对话框中,选择“代码生成器”选项,然后单击“确定”按钮,如下图所示。,16,操作要点:,(4)屏幕由Access窗口切换到Visual Basic代码窗口,输入代码。下图所示窗体为模块代码窗口,17,8.2.3 过程的调用,过程调用的语句结构如下:,格式,1,:,Call,子过程名,(形参列表),格式,2,:子过程名,(形参列表),18,8.3 VBA编程基础,8.3.1 VBA程序设计的基本概念,VBA程序设计是一种面向对象的程序设计。,面向对象程序设计是一种系统化的程序设计方法,它基于面向对象模型,采用面向对象的程序设计语言编程实现。,19,同其他任何面向对象的编程语言一样,VBA里也有对象、属性、方法和事件。,所谓对象,就是代码和数据的组合,可将它看作单元。例如,表、窗体或文本框等都是对象。每个对象由类来定义。,所谓属性,是指定义的对象特征,如大小、颜色、对象状态等。,所谓方法,是指对象能执行的动作,如刷新。,所谓事件,就是一个对象可以辨认的动作。如单击鼠标或者按下某个按键,并且可以编写一些代码针对这个动作来做出响应。,20,8.3.2 VBA的数据类型,Byte 字节,Integer 整型,Boolean 是/否,Long& 长整型,Single 单精度,Double 双精度,Currency 货币,String 文本或备注,Date 日期/时间,Variant 任何,21,8.3.3 VBA常量、变量和表达式,1常量,常量是固定不变的,也不能赋予新值。Access支持3种类型的常量:符号常量、系统定义常量和固有常量。,22,(1)符号常量需要声明的常量都是符号常量。声明常量的关键字为Const,其语法格式是:,public/privateConst,常量名,As,类型,=,表达式,【例8-4】声明一个在所有模块中使用的常量PI。,其语句格式为:,Public const PI As Double=3.1415926,23,(,2)系统定义常量:系统定义常量有三个值,它们是True、False和Null。,(3)固有常量:是Access或引用对象库的一部分,由Access自动定义,并且由程序列与控件提供。用户若需要使用该常量,可以使用“对象浏览器”来查看所有对象库中的固有常量列表。,24,2变量,定义:在程序中可改变的量。,分类:内存变量,字段变量,命名:其名称均可用字母、汉字、数字和下划线组成。变量名的第一个字符必须是英文字母,长度不得超过255个字符,并且变量名不能与命令和函数名相同。,变量声明:,其语法格式为:,Dim/public/private,变量名,As,数据类型,25,【例8-5】声明一个名为string1的本地变量,并给该变量赋值,其值为一个字符串“你好!”。,其语句格式为:,Dim string1 As string /,声明一个名为,string1,的变量,string1=,你好!, /,给变量赋值,26,3表达式,定义:表达式是对数据加工的具体实现,它是由常量、变量、函数和运算符组成的一个有意义的最基本的运算式子,对数据进行加工常常可以用一些简单的符号来描述,这些符号称为运算符。,27,常用运算符:,运,算,运,算,符,表达式示例,算术运算,乘方()、乘(*)、除(/)、取余(Mod)、加(+)、减(-),23+5,关系运算,小于()、等于(=)、小于等于(=)、不等于(),X12 345,逻辑运算,非(NOT)、与(AND)、或(OR),Y=0 AND Y=y”,否则打印“x=y Then Debug.Print x=y,Debug.Print x=60 Then,Debug.Print ,合格,Else,Debug.Print ,不合格,End if,由于x=20,所以执行Else后的语句,结果为:不合格。,32,【,例8-8,】若,x,表示学生成绩,编程为该成绩划分等级。,90,分以上为优秀,,80,分以上为良好,,70,分以上为中等,,60,分以上为及格,,60,分以下为不及格。,Dim x As Integer,x=95,If x=90 Then,Debug.Print ,优秀,Else If x=80 Then,Debug.Print ,良好,Else If x=70 Then,Debug.Print ,中等,Else If x=60 Then,Debug.Print ,合格,Else,Debug.Print ,不合格,End if,End if,End if,End if,由于x=95,将在立即窗口显示结果:优秀。,选择语句的嵌套形式,33,(3)多分支选择语句,语句结构如下:,Select Case,测试条件,Case,条件,1,语句,1,Case,条件,2,语句,2,Case,条件,n,语句,n,Case Else,语句,n+1,End Case,34,【,Dim x As Integer,x=95,Select Case x,Case 90 To 99,MsgBox ,优秀,Case 80 To 89,MsgBox ,良好,Case 70 To 79,MsgBox ,中等,Case 60 To 69,MsgBox ,合格,Case Else,MsgBox ,不合格,End Select,例,8-9,】用,Select Case,语句编程,完成例,8-8,的要求。,35,Case,表达式可以有以下多种形式:,l,单个值或一列值,相邻两值之间用逗号隔开;例如,Case 1,2,3。,l,用关键字To指定值的范围,其中第一个值不应大于第二个值,对字符串将比较它的第一个字符的ASCII码大小。,l,使用关键字Is指定条件。Is后紧接关系运算符(如、=、=和)和一个变量或值,例如,Case Is=90。,说明:,36,举例:,Dim x As Integer,x=95,Select Case x,Case Is=90,MsgBox ,优秀,Case Is=80,MsgBox ,良好,Case Is=70,MsgBox ,中等,Case Is=60,MsgBox ,合格,Case Else,MsgBox ,不合格,End Select,37,循环结构,(,1,),WhileWend,循环语句,WhileWend,循环语句是当条件成立时执行循环体称为当型循环,其语句结构如下:,While,条件,循环体,Wend,38,Dim s As Integer, i As Integer,s=0,i=0,While i10,i=i+1,s=s+i,Wend,Debug.Print 1+2+3+,+10=;s,【,例,8-10,】编写程序,计算,1+2+3+,+10,的和。,39,Do WhileLoop,循环与,While,循环都是当型循环,先判断条件,当条件成立时执行循环体。其语句结构如下:,Do While,条件,循环体,Loop,(,2,),Do WhileLoop,语句,40,Dim s As Integer, i As Integer,s=0,i=0,Do While i10,i=i+1,s=s+i,Loop,Debug.Print 1+2+3+10=;s,【,例,8-11,】用,Do WhileLoop,循环语句改写例,8-10,。,41,ForNext,循环语句常用于循环次数已知的程序中。其语句结构如下:,For,循环控制变量,=,初值,To,终值,Step,步长,循环体,Next,(,3,),ForNext,循环语句,42,将初值赋给循环控制变量。,判断循环控制变量是否在初值与终值之间。,如果循环控制变量超出范围,则跳出循环,否则继续执行循环体。,在执行完循环体后,将执行,Next,语句,该语句将循环控制变量加上步长后再赋给循环控制变量,其含义用语句表示:,循环控制变量,=,循环控制变量,+,步长,在循环控制变量加上步长后再返回第,2,步继续执行。,For,循环的循环次数可以使用如下公式计算:,循环次数,=(,终值,-,初值,)/,步长,+1,For,循环执行步骤如下:,43,Dim s As Integer,i As Integer,s=0,For i=1 To 10,s=s+i,Next,Debug.Print 1+2+3+,+10=;s,注意,:,改变循环的条件已交给,Next,语句。,【,例,8-12,】用,ForNext,循环语句改写例,8-10,。,44,For EachNext,语句用于对一个集合中的每个元素执行一次循环,直到集合中无更多元素时。其语句结构如下:,For Each,集合中的元素,in,集合,循环体,Next,(,4,),For EachNext,语句,45,For Each b in a(),If b Mod 2=0 Then,Debug.Print b,End If,Next,【,例,8-13,】编写程序,将数组,A,中的偶数元素输出。,46,1,进入程序编辑器,VBE,8.3.5 VBA,编程环境,方法一:,操作步骤如下:,(,1,)打开“学籍管理”数据库。,(,2,)在,Access,中,选择菜单栏上的“工具”,“宏”,“,Visual Basic,编辑器”命令。,方法二:,(,1,)打开“学籍管理”数据库。,(,2,)在“学籍管理”数据库窗口中,选择“模块”为操作对象,单击工具栏的“新建”按钮。,打开Visual Basic,编辑器,,并创建了一个空白模块。,47,VBA,操作界面,菜单栏,标准工具栏,工程资源管理器窗口,模块代码窗口,模块属性窗口,立即窗口,本地窗口,监视窗口,标题栏,48,8.3.6 VBA,程序的调试,在,VBA,环境中除了可以编写代码外,还可以对已编写的代码边运行边调试,以便及时发现错误和改正错误。调试程序的方法有逐句调试法,可以利用立即窗口逐句进行调试。,49,1,Debug.Print,语句,语句格式:,Debug.Print,变量,【,例,】,Debug.Print x,则在程序调试过程中,,x,的当前值就可以显示在立即窗口中。,50,2,设置断点,实现在程序中设置断点的操作步骤如下:,(,1,)把光标定位在需要停止运行的程序行。,(,2,)在某一代码行旁边单击,会出现一个圆点,表示该行设置为断点行,或选择菜单栏上的“调试”,“切换断点”命令,还可以按【,F9,】键设置断点。,(,3,)当程序运行到断点时自动停下,在本地窗口中就会显示当前变量的值。,51,VBA,调试,窗口,52,3,VBA,帮助系统,53,本章小结,本章主要介绍了VBA编程的基础,包括一些语法知识和一些程序结构语句的使用,以及VBA的编程环境和一些程序调式工具,同时还介绍了模块的概念、定义、分类和创建。,54,习题思考,面向对象程序设计相对于面向过程程序设计有哪些特点?,什么是变量作用域?什么是变量的生命周期?,VBA,中有几种模块?,55,实验12 VBA编程及创建模块,实验目的,(1)掌握创建模块的过程。,(2)熟悉在窗体上调用VBA代码的方法。,(3)理解各种变量类型,掌握其变量定义方法。,(4)初步具备调试程序的能力。,实验内容,设计一个窗体,用于录入学生的期末考试成绩,要求每输入一门成绩都要计算总分。,56,谢谢!,57,
展开阅读全文