(1)模块概述
1)什么是模块?模块是Microsoft Access 2010数据库中的一个重要对象,是由VBA语言编写的程序集合。模块基本上是由声明、语句和过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA代码进行组织。
2)类模块与标准模块。类模块是可以包含新对象定义的模块。新建一个类模块时,也就创建了新的对象。模块中定义的任何过程都会变成此对象的属性或方法。Access 2010中的类模块可以独立存在,也可以与窗体和报表同时出现。
标准模块一般用于存放公共过程(子程序和函数),不与其他任何Access对象相关联。在Access 2010系统中,通过模块对象创建的代码过程就是标准模块。
3)模块创建方法。创建模块有4种方法。
方法一:每创建一个窗体或报表,Access都会自动创建一个对应的窗体模块或报表模块。
方法二:在“数据库”窗口中,单击“创建”选项卡中的“其他”选项组中的模块,可以创建新的标准模块;单击“创建”选项卡中的“其他”选项组中的“类模块”,可以创建新的类模块。
方法三:在VBE编辑器中,单击“插入”菜单中的“模块”命令,可以创建新的标准模块;单击“插入”菜单中的“类模块”命令,可以创建新的类模块。
方法四:在VBE编辑器中,单击工具栏中“插入模块”按钮
右边的箭头,从下拉菜单中选择“模块”命令或者“类模块”命令。
(2)过程
在编写程序时,通常把一个较大的程序分为若干小的程序单元,每个程序单元完成相应独立的功能,这样可以达到简化程序的目的。这些小的程序单元就是过程。
过程是VBA代码的容器,通常有两种:Sub过程和Function过程。Sub过程没有返回值,而Function过程将返回一个值。
1)Sub过程。Sub过程执行一个操作或一系列运算,但没有返回值。用户可以自己创建Sub过程,或使用Access所创建的事件过程模板来创建Sub过程。
子过程的定义格式:
[Public|Private][Static]Sub子过程名([形参列表])
[局部变量或常数定义]
[语句序列]
[ExitSub]
[语句序列]
EndSub
2)Function过程。Function过程能够返回一个计算结果。Access 2010提供了许多内置函数(也称标准函数),除了系统提供的内置函数以外,用户也可以自己定义函数,编辑Function过程即是自定义函数。因为函数有返回值,因此可以用在表达式中。
函数过程的定义格式:
[Public|Private][Static]Function函数过程名([形参列表])[As类型]
[局部变量或常数定义]
[语句序列]
[Exit Function]
[语句序列](https://www.xing528.com)
函数名=表达式
End Function
3)过程的创建。
方法一:在VBE的“工程资源管理器”窗口中,双击需要创建过程的窗体模块或报表模块或标准模块,然后单击“插入”菜单中的“过程”命令,弹出“添加过程”对话框,根据需要设置参数。
方法二:在窗体模块或报表模块或标准模块的代码窗口中,输入子过程名,然后按En-ter键,自动生成过程的头语句和尾语句。
4)过程的作用范围。过程的作用范围分为公有的和私有的。公有的过程前面加Public关键字,可以被当前数据库中的所有模块调用。私有的过程前面加Private关键字,只能被当前模块调用。
5)过程的调用。事件过程的调用由事件触发。当一个对象的事件发生时,对应的事件过程会被自动调用。
•Sub过程的调用格式
格式一:Call过程名([参数列表])
格式二:过程名[参数列表]
•Function过程的调用
函数过程的调用同标准函数的调用相同,就是在赋值语句中调用函数过程。
调用格式:变量名=函数过程名([实参列表])
(3)参数传递
在调用过程中,一般主调过程和被调过程之间有数据传递,也就是主调过程的实参传递给被调过程的形参,然后执行被调过程。
1)传值调用的处理方式。当调用一个过程时,系统将相应位置实参的值复制给对应的形参,在被调过程的操作处理中,实参和形参没有关系。被调过程的操作处理是在形参的存储单元中进行的,形参值由于操作处理引起的任何变化均不影响实参的值。当过程调用结束时,形参所占用的内存单元被释放。因此,传值调用方式具有单向性。
2)传址调用的处理方式。当调用一个过程时,系统将相应位置实参的地址传递给相应的形参。因此,在被调过程处理中,对形参的任何操作处理都变成了对相应实参的操作,实参的值将会随被调过程对形参的改变而改变,传址调用方式具有双向性。
(4)VBA的内置函数
在VBA中,除模块创建过程中可以定义子过程和函数过程完成特定功能外,又提供了大量内置的标准函数,如数学函数、字符串函数、日期函数、转换函数等。在代码中使用内置函数可以为编程解决很多实际问题,并加快运行及编程速度。
(5)变量的作用域
1)局部变量。变量定义在模块的子过程或函数过程内部,使用Dim…As语句或Static关键字定义,或不加定义直接使用的变量。其作用范围仅在本子过程中,别的过程不能访问,一旦该子过程运行结束,局部变量的内容自动消失。
2)模块变量。变量定义在模块的所有子过程或函数过程的外部,在模块的声明区域(开始位置),使用Dim…As语句定义或用Private…As语句声明的变量。其作用范围为本模块的所有子过程或函数过程。别的模块过程不能访问,一旦模块运行结束,模块变量的内容自动消失。
3)全局变量。变量定义在标准模块的所有子过程或函数过程的外部,在标准模块的声明区域(开始位置)使用Public…As语句声明的变量。其作用范围为应用程序所有模块的子过程或函数过程。全局变量的值在整个应用程序的运行中始终存在,只有整个应用程序运行结束,全局变量的值才会消失。
(6)变量的生存期
1)动态变量。在过程中,用Dim关键字声明的局部变量属于动态变量。动态变量的生存期是指从变量所在的过程第一次执行,到过程执行完毕,自动释放该变量所占的内存单元为止的这一段时间。
2)静态变量。在过程中,用Static关键字声明的局部变量属于静态变量。静态变量在过程运行时可保留变量的值,即每次调用过程时,用Static说明的变量保持上一次的值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
