资源预览内容
第1页 / 共103页
第2页 / 共103页
第3页 / 共103页
第4页 / 共103页
第5页 / 共103页
第6页 / 共103页
第7页 / 共103页
第8页 / 共103页
第9页 / 共103页
第10页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
了解模块的概念与基本操作。 掌握模块和过程的创建方法。 掌握VBA的基础知识。 掌握VBA程序设计中的流程控制方法。 了解VBA数据库访问技术。,第8章 模块与VBA程序设计,8.1 模块与VBA概述 8.1.1 模块的概念 模块是由VBA通用声明和一个或多个过程组成的单元。组成模块的基础是过程,VBA过程通常分为子过程(Sub过程)、函数过程(Function过程)和属性过程(Property过程)。每个过程作为一个独立的程序段,实现某个特定的功能。,1标准模块 在标准模块中,放置的是可供整个数据库使用的公共过程,这些过程不与任何对象关联。如果想使设计的VBA代码具有在多个地方使用的通用性,就把它放在标准模块中。在标准模块中定义的变量和过程可供整个数据库使用。每个标准模块有唯一的名称,在导航窗格的“模块”对象中,可以查看数据库中的标准模块。,2类模块 类模块其实是一个对象的定义,它封装了一些属性和方法。VBA中类模块有3种基本类型:窗体模块、报表模块和自定义类模块。 还有一种自定义类模块,不与窗体和报表相关联,允许用户自定义所需的对象、属性和方法。,8.1.2 VBA的开发环境 1VBE的启动 单击“创建”选项卡,再在“宏与代码”命令组中单击“模块”、“类模块”或“Visual Basic”命令按钮,均可以打开VBE窗口。 在导航窗格的“模块”组中双击所要显示的模块名称,就会打开VBE窗口并显示该模块的内容。 在“数据库工具”选项卡中,单击“宏”命令组中的“Visual Basic”命令按钮,打开VBE窗口。在VBE窗口中,选择“插入”“模块”命令,或在VBE窗口“标准”工具栏中单击“插入模块”命令按钮旁的向下箭头,并从下拉菜单中选择“模块”命令,可以创建新的标准模块。,在窗体设计视图或报表设计视图中,单击“窗体设计工具/设计”选项卡或“报表设计工具/设计”选项卡,再在“工具”命令组中单击“查看代码”命令按钮。 在窗体、报表的设计视图中,右键单击控件对象,再在打开的快捷菜单中选择“事件生成器”命令,打开“选择生成器”对话框,选择其中的“代码生成器”选项,单击“确定”按钮。或单击“属性表”对话框中的“事件”选项卡,选中某个事件并单击属性框右边的省略号按钮,也可以打开“选择生成器”对话框,选择其中的“代码生成器”选项,单击“确定”按钮。 使用AltF11组合键,可以在Access主窗口和VBE窗口之间进行切换。,启动VBE后,屏幕出现VBE窗口,这就是VBA的开发环境,如图所示。,2VBE窗口的组成 VBE窗口除主窗口外,主要由工程资源管理器窗口、属性窗口、代码窗口和立即窗口等组成,另外还有对象窗口、对象浏览器、本地窗口和监视窗口等,可以通过VBE“视图”菜单中的相应命令来控制这些窗口的显示。 (1)VBE主窗口 VBE主窗口有菜单栏和工具栏。VBE的菜单栏包括文件、编辑、视图、插入、调试、运行、工具、外接程序、窗口和帮助10个菜单项,其中包含了各种操作命令。 在默认情况下,VBE窗口中显示的是“标准”工具栏,其中包括创建模块时常用的按钮。可以通过选择“视图”“工具栏”命令来显示其他工具栏。,(2)工程资源管理器窗口 工程资源管理器窗口列出了在应用程序中用到的模块。使用该窗口,可以在数据库内各个对象之间快速地浏览。各对象以树形图的形式分级显示在窗口中,包括Access类对象、模块和类模块。要查看对象的代码,只需在该窗口中双击对象即可。要查看对象的窗体,可以右键单击对象名,然后在弹出的快捷菜单中选择“查看对象”命令。,(3)属性窗口 属性窗口列出了所选对象的各种属性,可按字母和分类排序来查看属性。可以直接在属性窗口中对这些属性进行编辑,还可以在代码窗口中用VBA语句设置对象的属性。,(4)代码窗口 在代码窗口中可以输入和编辑VBA代码。可以打开多个代码窗口来查看各个模块的代码,而且可以方便地在代码窗口之间进行复制和粘贴。 在代码窗口的顶部是两个下拉列表框,左边是对象下拉列表框,右边是事件下拉列表框。对象下拉列表框中列出了所有可用的对象名称,选择某一个对象后,在事件下拉列表框中将列出该对象所有的事件。,(5)立即窗口 立即窗口常用于程序在调试期间输出中间结果及帮助用户在中断模式下测试表达式的值等,也可以在立即窗口中直接输入VBA命令并按Enter键,此后VBA会实时解释并执行该命令。,8.1.3 模块的创建 1创建模块的方法 模块的创建有以下几种方法。 在Access中创建一个窗体或报表,Access都会自动创建一个对应的窗体模块或报表模块。 单击“创建”选项卡,再在“宏与代码”命令组中单击“模块”或“类模块”命令按钮,打开VBE窗口并建立一个新的模块。 在VBE窗口中,选择“插入”“模块”菜单命令可以创建新的标准模块;选择“插入”“类模块”菜单命令可以创建新的类模块。单击VBE“标准”工具栏中“插入模块”按钮右侧的向下箭头,从下拉列表中选择“模块”选项或“类模块”选项。,例8-1 在“教学管理”数据库中创建一个标准模块。 操作步骤: 打开VBE窗口。 在代码窗口中输入一个名为“qq”的子过程,然后在立即窗口中输入命令“Call qq()”,或单击VBE窗口“标准”工具栏中的“运行子过程/用户窗体”命令按钮,或从“运行”菜单中选择相应命令来运行该过程,随后可以看到该过程的运行结果。 在VBE窗口中单击“标准”工具栏中的“保存”按钮,并输入模块名称将模块存盘,这样一个标准模块就建好了,回到Access导航窗格中可以看到建好的模块对象。,2对象的引用 引用对象属性的语法格式为 对象名.属性名 在程序代码中改变属性的值,其语句格式为 对象名.属性名属性值 引用方法的语法格式为 对象名.方法名(参数1,参数2,),当引用对象的多个属性时,可使用WithEnd With结构,而不需要重复指出对象的名称。例如,如果要给命令按钮Cmd1的多个属性赋值,可表示为 With Cmd1 .Caption“确定“ .Height2000 .Width2000 End With,Access中提供了一个重要的对象DoCmd对象,它的主要功能是通过调用包含在内部的方法实现VBA程序设计中对Access的操作。例如,利用DoCmd对象的OpenReport方法打开“学生”报表,语句为 DoCmd.OpenReport “学生“,3编写对象响应的程序代码 可以通过两种方法来处理窗体、报表或控件的事件响应。 使用宏操作来设置事件的属性。 在代码窗口中为某个事件创建事件过程。 例如,命令按钮Command1的Click事件过程名为“Command1_Click”。该子程序就是处理该事件的程序,称为事件过程,一般格式为 Private Sub 对象名_事件名(参数表) (事件过程代码) End Sub,例8-2 在“教学管理”数据库中创建如图9-3所示的窗体,窗体中包含两个文本框和相应的标签及两个命令按钮。单击第1个命令按钮时将第1个文本框中的内容显示在第2个文本框中,单击第2个命令按钮时关闭该窗体。,8.2 VBA的数据类型及运算 8.2.1 数据类型 数据类型反映了数据在内存中的存储形式及所能参与的运算,它又分为标准数据类型和用户自定义数据类型。 1标准数据类型 VBA支持多种标准数据类型,为用户编程提供了方便。例如,Integer(整型)、Long(长整型)、Single(单精度型)、Double(双精度型)、Currency(货币型)、String(字符型)、Date(日期型)、Boolean(布尔型)、Byte(字节型)、Variant(变体型)、Object(对象)。,Variant数据类型是一种特殊数据类型,具有很大的灵活性,可以表示多种数据类型,其最终的数据类型由赋予它的值来确定。如果变量在使用前未加以类型说明,默认为Variant型。,2用户自定义数据类型 VBA允许用户自定义数据类型,使用Type语句就可以实现这个功能。用户自定义数据类型可包含一个或多个某种数据类型的数据元素。Type语句的语法格式为 Type 数据类型名 数据元素定义语句 End Type,8.2.2 常量与变量 1常量 (1)直接常量 不同类型的直接常量有不同的表示方法,使用时应遵循相应的规则,常用的表示方法有如下4种。 十进制整数由数字09和正、负号组成,实数可采用小数表示形式和科学记数表示形式。 字符串常量是一个用双引号括起来的字符序列。在字符串中,字母的大小写是有区别的。 布尔常量有True和False两个值。 日期常量以字面上可被认做日期和时间的字符并用一对“#”括起来表示。,(2)符号常量 符号常量用标识符来表示某个常量,用户一旦定义了符号常量,在以后的程序中不能用赋值语句来改变它们的值,否则,在运行程序时将出现错误。 标识符是用来表示用户所定义的常量、变量、过程、函数等程序要素的符号。在VBA中,标识符的命名必须以字母或汉字开头,且只能由汉字、字母(az或AZ)、数字(09)或下划线(_)所组成,其最大长度为255个字符。此外,不能使用VBA的关键字作为标识符,标识符不区分大小写。,在VBA中声明常量的语句格式为 Const常量名 As 数据类型|类型符表达式,常量名 As 数据类型|类型符表达式,(3)系统常量 系统常量是VBA预先定义好的常量,用户可以直接使用。例如,VBA用vbKeyReturn来表示Enter键,它的ASCII码值是13。,2变量 在高级语言中,变量可以看做是一个被命名的内存单元,通过变量的名字来访问相应的内存单元。 (1)变量的命名规则 为了区别存储着不同数据的变量,需要对变量命名,VBA的变量名要遵循标识符的命名规则。为了增加程序的可读性和可维护性,可以在命名变量时使用前缀的约定。这样通过变量名就可以知道变量的数据类型。,(2)变量的声明 声明变量有两个作用,一是指定变量的数据类型,二是指定变量的作用范围。如果在程序中没有明确声明变量,VBA会默认地将它声明为Variant数据类型。虽然默认声明变量很方便,但可能会在程序代码中导致严重的错误,因此,使用变量前声明变量是一个很好的编程习惯。 声明变量要使用Dim语句,Dim语句的格式为 Dim 变量名 As 数据类型|类型符,变量名 As 数据类型|类型符,(3)变量的赋值 声明了变量后,变量就指向了内存的某个单元。在程序的执行过程中,可以向这个内存单元写入数据,这就是变量的赋值。给变量赋值的语句格式为 变量名表达式,3数组变量 数组是一组具有相同数据类型的数据所构成的集合,而其中单个的数据称为数组元素。数组必须先声明后使用,数组声明即定义数组名、类型、维数和各维的大小。定义数组后,数组名代表所有数组元素,而数组名加下标表示一个数组元素,也称为下标变量。,数组的声明方式和其他变量是一样的,可以使用Dim语句来声明,其一般格式为 Dim 数组名(下标1下界 To 下标1上界, 下标2下界 To 下标2上界) As 数据类型 下标下界的默认值为0,在使用数组时,可以在模块的通用声明部分使用“Option Base 1”语句来指定数组下标下界从1开始。 数组分为固定大小数组和动态数组两种类型。若数组的大小被指定,则它是个固定大小数组;若程序运行时数组的大小可以被改变,则它是个动态数组。,(1)声明固定大小数组 下面的语句声明了一个固定大小数组。 Dim MyArray(10,10) As Integer (2)声明动态数组 可以利用Dim语句来声明数组,不需给出数组大小。每当需要时,可以使用ReDim语句去更改动态数组,此时数组中存在的值会丢失。若要保存数组中原先的值,则可以使用ReDim Preserve语句来扩充数组。,8.2.3 内部函数 内部函数是VBA系统为用户提供的标准过程,能完成许多常见运算。根据内部函数的功能,可
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号