资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章模块对象和VBA编程,讲授4学时 上机2学时,总体要求:,理解模块的概念和分类 熟悉VBA编程的界面 熟悉VBA的基本概念和基本语法 掌握模块的创建方法和使用 程序控制语句 VBA程序调试方法 编写事件驱动程序,学习重难点:,VBA功能和基础知识 创建模块 创建过程 创建VBA程序 运行VBA程序,主要内容:,认识模块对象 模块的创建 VBA编程基础,8.1 认识模块对象,定义:模块对象是Access数据库管理系统中的一个独立单元,它实际上是一个由若干个VBA代码组成的过程。可以把模块理解为是装着VBA程序代码的容器。,分类:,1类模块 类模块是可以定义新对象的模块。新建一个类模块,也就是创建了一个新对象。模块中定义的过程将变成该对象的属性或方法。类模块可以独立存在,也可以与窗体或报表同时出现。 窗体和报表模块都是类模块,它们各自与某个窗体或报表相关联。 2标准模块 标准模块包括通用过程和常用过程,它们不与任何对象相关联,并且可以在数据库中的任何位置运行。,8.2 模块的创建,【例8-1】创建一个能在屏幕上显示“大家好,欢迎走进Access”的提示框的模块,模块名称为“示例模块”。,8.2.1 创建模块与过程,1模块的创建,操作要点,( 1)打开数据库。 (2)选择数据库窗口中的“模块”对象。 (3)选择菜单栏上的“工具”“宏”“Visual Basic编辑器”命令,打开Visual Basic编辑器窗口。 (4)选择菜单栏上的“插入”“模块”命令,Access打开新的模块定义窗口。 (5)在新的模块定义窗口中输入代码,然后保存。,Visual Basic编辑器窗口和示例模块运行结果,2过程的创建,定义:过程是包含VBA代码的基本单位,是一段相对独立的代码,完成一个特定任务。一个较大的任务通常由多个过程组成。其语法结构如下: Sub过程名(形参列表) 语句块 EndSub,【例8-2】新建模块,实现输入两个整数,并按从小到大排序输出。,操作要点:,(1)打开数据库。 (2)选择数据库窗口中的“模块”对象。 (3)单击数据库窗口工具栏上的“新建”按钮,弹出Visual Basic编辑器窗口。 (4)选择菜单栏上的“插入”“过程”命令,打开 “添加过程”对话框,并按照对话框输入相应信息。 (5)单击工具栏上的“保存”按钮,保存模块。,8.2.2 编写事件过程,【例8-3】在“密码输入”窗体中添加一个命令按钮,并为该按钮编写事件过程,检测输入的密码是否正确,如不正确弹出输入密码错误消息框。,操作要点:,(1)建立窗体,并命名为“密码输入”,如下图所示。,操作要点:,(2)单击“密码检测”按钮控件,弹出一个模块的快捷菜单,如右图所示。在菜单中选择“事件生成器”命令。,操作要点:,(3)在弹出的“选择生成器”对话框中,选择“代码生成器”选项,然后单击“确定”按钮,如下图所示。,操作要点:,(4)屏幕由Access窗口切换到Visual Basic代码窗口,输入代码。下图所示窗体为模块代码窗口,8.2.3 过程的调用,过程调用的语句结构如下: 格式1:Call 子过程名(形参列表) 格式2:子过程名(形参列表),8.3 VBA编程基础,8.3.1 VBA程序设计的基本概念 VBA程序设计是一种面向对象的程序设计。 面向对象程序设计是一种系统化的程序设计方法,它基于面向对象模型,采用面向对象的程序设计语言编程实现。,同其他任何面向对象的编程语言一样,VBA里也有对象、属性、方法和事件。 所谓对象,就是代码和数据的组合,可将它看作单元。例如,表、窗体或文本框等都是对象。每个对象由类来定义。 所谓属性,是指定义的对象特征,如大小、颜色、对象状态等。 所谓方法,是指对象能执行的动作,如刷新。 所谓事件,就是一个对象可以辨认的动作。如单击鼠标或者按下某个按键,并且可以编写一些代码针对这个动作来做出响应。,8.3.2 VBA的数据类型,Byte 字节 Integer 整型 Boolean 是/否 Long& 长整型 Single 单精度 Double 双精度 Currency 货币 String 文本或备注 Date 日期/时间 Variant 任何,8.3.3 VBA常量、变量和表达式,1常量 常量是固定不变的,也不能赋予新值。Access支持3种类型的常量:符号常量、系统定义常量和固有常量。,(1)符号常量需要声明的常量都是符号常量。声明常量的关键字为Const,其语法格式是: public/privateConst 常量名As 类型=表达式 【例8-4】声明一个在所有模块中使用的常量PI。 其语句格式为: Public const PI As Double=3.1415926,(2)系统定义常量:系统定义常量有三个值,它们是True、False和Null。 (3)固有常量:是Access或引用对象库的一部分,由Access自动定义,并且由程序列与控件提供。用户若需要使用该常量,可以使用“对象浏览器”来查看所有对象库中的固有常量列表。,2变量,定义:在程序中可改变的量。 分类:内存变量 字段变量 命名:其名称均可用字母、汉字、数字和下划线组成。变量名的第一个字符必须是英文字母,长度不得超过255个字符,并且变量名不能与命令和函数名相同。 变量声明: 其语法格式为: Dim/public/private 变量名 As 数据类型,【例8-5】声明一个名为string1的本地变量,并给该变量赋值,其值为一个字符串“你好!”。 其语句格式为: Dim string1 As string /声明一个名为string1的变量 string1=“你好!“ /给变量赋值,3表达式,定义:表达式是对数据加工的具体实现,它是由常量、变量、函数和运算符组成的一个有意义的最基本的运算式子,对数据进行加工常常可以用一些简单的符号来描述,这些符号称为运算符。,常用运算符:,8.3.4 VBA程序结构,在VBA程序设计中,程序的流程一般分为3种: 1 顺序结构 分支结构 循环结构。,(1)简单选择语句 最简单的选择语句格式如下: If 条件 Then 语句1 Else 语句2,分支语句:,【例8-6】编写程序,用立即窗口来输出结果。如果x大于或等于y,则打印“x=y”,否则打印“x=y Then Debug.Print “x=y“ Debug.Print “xy“,If 条件 Then 语句组 Else 语句 End if 或者 If 条件 Then 语句组1 Else 语句组2 End if,(2)结构化的选择语句,【例8-7】若x表示学生成绩,编程用立即窗口来输出成绩合格或不合格。 Dim x As Integer x=20 If x=60 Then Debug.Print “合格“ Else Debug.Print “不合格“ End if 由于x=20,所以执行Else后的语句,结果为:不合格。,【例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,将在立即窗口显示结果:优秀。,选择语句的嵌套形式,(3)多分支选择语句,语句结构如下: Select Case 测试条件 Case 条件1 语句1 Case 条件2 语句2 Case 条件n 语句 n Case Else 语句n+1 End Case,【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的要求。,Case表达式可以有以下多种形式: l 单个值或一列值,相邻两值之间用逗号隔开;例如,Case 1,2,3。 l 用关键字To指定值的范围,其中第一个值不应大于第二个值,对字符串将比较它的第一个字符的ASCII码大小。 l 使用关键字Is指定条件。Is后紧接关系运算符(如、=、=和)和一个变量或值,例如,Case Is=90。,说明:,举例:,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,循环结构,(1)WhileWend循环语句 WhileWend循环语句是当条件成立时执行循环体称为当型循环,其语句结构如下: While 条件 循环体 Wend,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的和。,Do WhileLoop循环与While循环都是当型循环,先判断条件,当条件成立时执行循环体。其语句结构如下: Do While 条件 循环体 Loop,(2)Do WhileLoop语句,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。,ForNext循环语句常用于循环次数已知的程序中。其语句结构如下: For 循环控制变量=初值 To 终值 Step 步长 循环体 Next,(3)ForNext循环语句, 将初值赋给循环控制变量。 判断循环控制变量是否在初值与终值之间。 如果循环控制变量超出范围,则跳出循环,否则继续执行循环体。 在执行完循环体后,将执行Next语句,该语句将循环控制变量加上步长后再赋给循环控制变量,其含义用语句表示: 循环控制变量=循环控制变量+步长 在循环控制变量加上步长后再返回第2步继续执行。 For循环的循环次数可以使用如下公式计算: 循环次数=(终值-初值)/步长+1,For循环执行步骤如下:,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。,For EachNext 语句用于对一个集合中的每个元素执行一次循环,直到集合中无更多元素时。其语句结构如下: For Each 集合中的元素 in 集合 循环体 Next,(4)For EachNext 语句,For Each b in a() If b Mod 2=0 Then Debug.Prin
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号