第8章模块与VBA编程基础.ppt
《第8章模块与VBA编程基础.ppt》由会员分享,可在线阅读,更多相关《第8章模块与VBA编程基础.ppt(168页珍藏版)》请在三一文库上搜索。
1、第8章 模块与VBA编程基础,考试大纲,VBA程序设计基础 1. 面向对象程序设计的基本概念 2. 模块的基本概念 (1)类模块 (2)标准模块 3. 创建模块 (1)创建VBA模块 (2)编写常用事件代码 Click,Load,Init,GetFocus,LostFocus 4. VBA编程基础 (1)常量,变量,常用内部函数,表达式 (2)VBA程序流程控制:顺序控制,选择控制,循环控制 (3)过程的定义与调用:子过程,函数过程,参数传递,Contents,模块的基本概念,创建模块,1,2,模块是Access数据库中的一个重要对象,它以VBA( Visual Basic for Appli
2、cations )为基础编写以函数过程(Function)或子过程为单元的集合方式存储。 Access中,模块分为类模块和标准模块两种类型。,8.1 模块的基本概念,*模块和宏区别,“模块”和“宏” 有什么区别? 使用“宏”更加简单,不需要编程,而是用“模块”,要求对编程有基本知识,比较复杂。 “模块”的运行速度比较快,而“宏”运行速度比较慢。 “宏”的每个基本操作在VBA中都有相应的等效命令,如果在“模块”中使用这些语句就可以实现所有的单独的“宏”命令,所以“模块”的功能比“宏”更加强大。,类模块(文件扩展名为 .cls) 类模块是含有类定义的模块,包括其属性、事件和方法的定义。与窗体、报表
3、、控件等紧密关联,如:窗体模块和报表模块都是类模块。,8.1.1 类模块,窗体和报表模块通常都含有事件过程,该过程用于响应窗体或报表中的事件。可以使用事件过程来控制窗体或报表的行为,以及它们对用户操作的响应,例如:用鼠标单击某个命令按钮。 窗体和报表模块具有局部特性,其作用范围局限在所属窗体和报表内部,而生命周期则是伴随着窗体和报表的打开而开始,关闭而结束。,8.1.1 类模块,类模块(文件扩展名为 .cls),8.1.1 类模块,例:form1,标准模块(文件扩展名为 .bas) 标准模块作用是合理组织程序或控制程序执行流程,纯代码,不与任何对象(窗体、报表、控件等)相关联,可放置在数据库中
4、的任何位置,可以被工程内数据库对象调用。,8.1.2 标准模块,标准模块(文件扩展名为 .bas) 标准模块中的公共变量和公共过程具有局部特性,其作用范围在整个应用程序里,而生命周期则是伴随着应用程序的运行而开始,关闭而结束。,8.1.2 标准模块,标准模块(文件扩展名为 .bas),8.1.2 标准模块,例:form1,Access宏实质上就是VBA程序,宏的操作都是由VBA代码实现的。 宏的用法简单,上手容易,比较适合没有编程基础的用户开发普通应用程序。宏的不足是功能较弱、运行效率较差。 Access模块中内嵌的VBA功能强大,具有较完 善的语法体系和强大的开发功能。它采用目前主流 的面向
5、对象机制和可视化编程环境,适用于开发 高级Access数据库应用系统。,8.1.3 将宏转换为模块,每一个宏操作都有自己对应的VBA代码,根据需要我们可以把宏转换为模块。,8.1.3 将宏转换为模块,过程是模块的组成单元,由VBA代码编写而成。 过程分两种类型:Sub子过程和Function函数过程。,8.2 创建模块,一 在模块中加入过程 声明:声明(定义)变量 过程(若干个):过程是模块的组成单元,分2种: 子(Sub)过程 子过程没有返回值,它的定义格式如下: Sub过程名 程序代码 End Sub 其中的程序代码表示要完成的一系列操作。调用子过程用 Call 过程名。,8.2 创建模块
6、,一 在模块中加入过程 函数(Function) 函数过程又称为Function过程,函数过程有返回值,它的 定义格式如下。 Function 过程名 程序代码 End Function 调用函数过程时,直接引用函数过程的名称。,8.2 创建模块,一 在模块中加入过程,8.2 创建模块,二 在模块中执行宏 在模块的过程定义中,使用Docmd对象的RunMacro方法,执行宏,其格式: Docmd.RunMacro MacroName,RepeatCount,RepeatExpression MacroName:当前数据库中宏的名字; RepeatCount:可选项,计算宏运行次数的整数值; R
7、epeatExpression:可选项,数值表达式,在每次运行宏时进行计算,结果为False,停止运行宏。,8.2 创建模块,8.3 VBA程序设计基础,VBA 是微软Office中的内置编程语言,其语法与VB的兼容,在Access程序设计中,当某些操作不能使用其他Access对象实现,或者实现较难时,就可利用VBA语言编写程序代码。,8.3.1 面向对象程序设计的基本概念,1.集合(类)和对象 集合:含有相同属性的事物的总称成为集合,比如所有的学生就构成一个集合(类)。 对象:集合中的某一个实体,例如学生集合中的某一个学生就是一个对象。 在自然界中,一个对象就是一个实体,如一辆汽车就是一个对
8、象。在面向对象的程序设计中,对象代表应用程序中的元素,如表、窗体、按钮等。 Access有几十个对象,其中包括对象和对象集合。所有对象和对象集合按层次结构组织,处在最上层的是Application对象,即Access应用程序,其他对象或对象集合都处在它的下层或更下层。,8.3.1 面向对象程序设计的基本概念,2.属性和方法 属性是对象的特征。如汽车有颜色和型号属性,按钮有标题和名称属性。对象的类别不同,属性会有所不同。同类别对象的不同实例,属性也有差异。例如,同是命令按钮,名称属性不允许相同。 描述对象的性质和行为,引用方式: 对象.属性或者对象.行为 DoCmd对象:通过调用包含在内部的方法
9、来实现VBA编程中对Access的操作。具体调用格式: DoCmd.OpenReport “报表名” ,视图,查询名称,条件 DoCmd.OpenReport “教师信息“,Docmd是Access的一个特殊对象,用来调用内置方法,在程序中实现对Access的操作,诸如打开窗口、关闭窗体、打开报表、关闭报表等。 DoCmd 对象的大多数方法都有参数,有些参数是必需的,有些则是可选的。若省略可选参数,参数将采用默认值。,Docmd对象,(1)用DoCmd 对象打开窗体 格式:DoCmd.OpenForm “窗体名“ 功能:用默认形式打开指定窗体。 例如:DoCmd.OpenForm “文本框练习
10、“,(2)用DoCmd 对象关闭窗体 格式1:DoCmd.Close acForm, “窗体名“ 功能:关闭指定窗体。 例如:DoCmd.Close acForm, “文本框练习“ 格式2:DoCmd.Close 功能:关闭当前窗体。 (3)用DoCmd 对象打开报表 格式:DoCmd.OpenReport “报表名“,acViewPreview 功能:用预览形式打开指定报表。 例如:DoCmd.OpenReport “工资报表“,acViewPreview,Docmd对象,(4)用DoCmd 对象关闭报表 格式1:DoCmd.Close acReport, “报表名“ 功能:关闭指定报表。
11、例如:DoCmd.Close acReport, “工资报表“ 格式2:DoCmd.Close 功能:关闭当前报表。,Docmd对象,(5)用DoCmd 对象运行宏 格式:DoCmd.RunMacro “宏名“ 功能:运行指定宏。 例如:DoCmd.RunMacro “宏1“ (6)用DoCmd 对象退出Access。 格式:DoCmd.Quit 功能:关闭所有Access对象和Access本身。,Docmd对象,(1)在窗体中建立5个按钮名称分别为c1、c2、c3、c4、c5标题分别为“打开窗体”、“关闭窗体”、“打开报表”、“关闭报表”、“退出Access” 。,实例:使用DoCmd对象,
12、(2)c1代码:DoCmd.OpenForm “教师基本情况“ (3)c2代码:DoCmd.Close acForm, “教师基本情况“ (4)c3代码:DoCmd.OpenReport “按年龄段统计报表 “,acViewPreview (5)c4代码:DoCmd.Close acReport, “按年龄段统计报表“ (6)c5代码:DoCmd.Quit,例:使用DoCmd对象,8.3.1 面向对象程序设计的基本概念,3.事件和事件过程 事件:Access窗体或者报表及其上控件等对象可以“辨识”的动作,如单击、双击、某一个按键等。 事件过程:为某个事件编写VBA代码过程,来完成指定的动作。
13、在类模块每一个过程的开始行,都显示对象名和事件名。 如:Private Sub c1_Click()。,例:动态设置控件属性,(1)在窗体中建1个文本框名称为t1。 (2)在窗体中建1个标签名称为b1标题为“欢迎你!”。 (3)在窗体中建3个命令按钮名称分别为c1、c2、c3标题 分别为“红色”、“绿色”、“蓝色”。,8.3.1 面向对象程序设计的基本概念,3.事件和事件过程,(4)设置各按钮的前景色,在属性窗口可查看颜色值。,(5)c1的click事件代码: t1.BackColor = 255 b1.ForeColor = 255,(6)c2的click事件代码: t1.BackColor
14、 = 33792 b1.ForeColor = 33792 (7)c3的click事件代码: t1.BackColor = 16711680 b1.ForeColor = 16711680,执行结果:,8.3.2 VBE编程环境,1.进入VBE编辑环境 类模块: 1)定位窗体或者报表,单击工具栏“代码”按钮; 2)或者通过窗体、报表或者控件“属性”窗口中“事件”选项卡的“事件过程”项进入。 标准模块: 1)已有模块,在数据库窗体选择“模块”对象,双击要查看的模块; 2)新建模块,在数据库窗体选择“模块”对象,单击“新建” 按钮; 3)在数据库对象窗体中,单击“工具”菜单“宏”“Visual b
15、asic 编辑器”。,工具栏,属性窗口,代码窗口,工程窗口,8.3.2 Visual Basic编程环境,(1)标准工具栏,(2)工程窗口 工程资源管理器,显示应用程序的所有模块文件。 3个按钮: 查看代码 按钮可以打开相应的代码窗口。 查看对象 按钮可以打开相应的对象窗口。 切换文件夹 可以隐藏或显示对象的分类文件夹。 (3)代码窗口 代码窗口主要是用来编写、显示以及编辑VBA代码, 如下图所示。,8.3.2 Visual Basic编程环境,(3) 代码窗口,对象浏览器 快速访问子过程 自动显示提示信息 F1帮助,代码窗口,数据库引擎,(4)属性窗口 列出了所选对象的属性,由“对象”框和“
16、属性”列表组成。 对象框: 用于列出当前所选的对象。 属性列表:按字母或分类对对象属性进行排序。 可以在属性窗口中直接用前面用到的方法设置 对象的属性(静态设置方法)。 可以在代码窗口中用VBA代码编辑对象的属 性(动态设置方法)。 (5)立即窗口 用来进行快速的表达式计算、简单方法的操作寄进行程序测试的工作窗口。,8.3.2 Visual Basic编程环境,二、进入VBE编程环境,VBE将模块分成对象、标准和类模块 。 进入其编辑环境有多种方式: 一、对象模块:可以直接定位到窗体或报表,然后单击视图下的“代码”按钮进入;或定位到窗体、报表和控件上通过指定对象事件处理过程进入。其方法有两种:
17、 (1)右键单击控件对象,单击快捷菜单上的“事件生成器命令”,打开“事件生成器”对话框,选择其中的“代码生成器”,单击 “确定”按钮即可进入; (2)单击属性窗口的“事件”选项卡,选中某个事件直接单击属性右侧的“”按钮,打开“事件生成器”对话框,选择其中的“代码生成器”,单击“确定”按钮即可进入。,二、进入VBE编程环境,二、对于标准模块:有3种方法进入: (1)对于已存在的标准模块,只需从数据库窗体对象列表上选择“模块”,双击要查看的模块对象即可进入; (2)要创建新的标准模块,需要从数据库窗体对象列表上选择“模块”,单击工具栏上的“新建”按钮即可进入; (3)在数据库对象窗体中,选择“工具
18、”菜单里“宏”子菜单的“Visual Basic编辑器”选项即可进入。 使用Alt+F11组合键,可以方便的在数据库窗口和VBE之间进行切换。,三、VBE环境中编写VBA代码,VBA代码是由语句组成的,一条语句就是一行代码。例如 intCount=3 将3赋值给变量intCount Debug. Print intCount 在立即窗口打印变量intCount的值3,三、VBE环境中编写VBA代码,Access的VBE编辑环境提供了完整的开发和调试工具。其中的代码窗口顶部包含两个组合框,左侧为对象列表,右侧为过程列表。操作时,从左侧组合框选定一个对象后,右侧过程组合框中会列出该对象的所有事件过
19、程,再从该对象过程列表选项中选择某个事件名称,系统会自动生成相应的事件过程模块,用户添加代码即可。 双击工程窗口中的任何类或对象都可以在代码窗口中打开相应代码进行编辑处理,四、程序语句书写原则,1 语句书写规定 通常一个语句写在一行,若要分行用续行符”-”; ”:“将一行中多条语句隔开; 若语句中出现红色表示有错误。,四、程序语句书写原则,2 注释语句 一个好的程序都要有注释语句。 在VBA中使用下列格式: Rem 注释语句 (单引号)注释语句 Rem 定义两个变量 Dim Str1,Str2 Str1=“beijing” Str2=“Shanghai”,四、程序语句书写原则,3 采用缩进格式
20、书写程序 编辑缩进(或凸出) 4 F1帮助信息,一、标准数据类型 VBA提供了多种数据类型的支持,这样也是为了大家进行编程提供方便。 各种数据类型所占的存储空间、所表示数据范围大小、以及所支持的数据运算不同。 数据类型可以分为数值型、布尔型、日期型、字符型、对象型、变体型和用户自定义的数据类型。,8.3.3 数据类型和数据库对象,8.3.3 数据类型与数据库对象,数据类型转换函数,例:在立即窗口中计算函数值 (1)在VBE界面“视图”菜单“立即窗口”,显示立即窗口。 (2)输入表达式x=“true”回车输入表达式y=“false”回车输入表达式 ?x+y回车,显示结果为:truefalse。
21、(3)输入表达式 ?cbool(x)+cbool(y)回车,显示结果为:-1。 说明:每行写完后必须回车才能生效。问号与print语句相同,在立 即窗口显示计算结果。,数据类型-布尔型,布尔数据类型以16位数字形式存储。 布尔数据类型只有True和False两个值。 布尔数据支持逻辑与、或、非等运算。 当其他的数值类型转化为布尔型时,0转化为False,其他转化为True。 当布尔型转化为其他的数值类型时, False转化为 0 , True转化为-1。,标识符:Boolean,数据类型-日期型,日期数据类型以64位浮点数值形式存储。 日期数据类型前后必须用#封住如:#2012/4/1# 日期
22、变量根据计算机中的短日期格式显示,时间则根据计算机的时间格式显示。 当其他数值类型转化为时间类型时,整数部分表示日期,小数部分表示时间,负数表示1899年12月31日以前的日期。,标识符:Date,数据类型-变体型,变体数据类型所代表的数据类型是不确定的,可以成为任何类型的变量。 变体的数据类型的变量可以存储特殊值,如:Empty,Error,Nothing,Null等。 变体数据类型中的数值类型可以代表任何的整型和实型数。可以用VarType和TypeName函数检查变体中的数据,标识符:Variant,数据类型-字符型,每个字符以一个字节(8位)进行表示,对应的数值的范围是0255。 字符
23、中的前128个字符对应于ASCII字符集中的定义,字符集后128个字符代表特定的字符。 字符数据类型两种:变长字符和定长字符。 变长字符可以包括的字符数量为0到约20亿个 定长字符可以包括的字符数量为1到约64K个字符。,标识符:String,数据类型-数值型,VBA中数值型包括整型、长整型、单精度、双精度和货币等。 数据的存储从8位到64位不等。 数据支持加、减、乘、除等运算。 货币类型的数据保持小数点左边15位数字,右边4位数字,以满足精度的需要。,标 识 符,二 用户定义的数据类型,前面所介绍的数据类型都是原子型的数据类型,即不可以再分割的数据类型,使用Type语句可以定义任何结构型数据
24、类型,如: 定义格式:Type 数据类型名 域名1 as 数据类型 域名2 as 数据类型 End Type,二 用户定义的数据类型,例如: Type newstudent txtno As String*7 txtname As String txtsex As string*1 txtage As Integer End Type 这样就定义了“newstudent”这种数据类型,它包括“编号“、“姓名”、“性别”、“年龄”四个数据域。,二 用户定义的数据类型,用户定义数据类型变量的取值可指明变量名及分量名,两者用句号分开,如: Dim NewStu as NewStudent NewSt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 VBA 编程 基础
链接地址:https://www.31doc.com/p-2609058.html