8.1.2 模块的分类及组成
“模块”对象是存储代码的容器,程序是用VBA(Visual Basic for Application)语言编写的,VBA是Office软件中的内置编程语言,它的语法与Visual Basic兼容。模块中的代码以过程的形式加以组织,过程都可以是一个Sub子过程或Function函数过程。模块是Access的一个独立对象,由过程组成,即过程存在于模块中。
“模块”分为两种类型,一是窗体模块,二是标准模块。
1.窗体和报表模块
由于VBA是面向对象的应用程序开发工具,所有的窗体和报表均支持事件。在窗体和报表的“属性表”面板中,通过窗体和报表事件对应的“…”按钮,打开事件的VBA编辑器,编写VBA代码,构成窗体模块,如图8-1所示。窗体模块存储于窗体对象中,随窗体的打开而打开,随窗体的关闭而退出。
窗体模块由通用段和事件过程组成。
2.标准模块
标准模块独立于窗体和报表,是一个独立的对象,有模块名,可通过导航窗格中的模块组查看、编辑。
标准模块可以在数据库内部任何位置运行,一般包含全局变量、Function(函数)过程和Sub过程(子过程)。
图8-1 按钮单击事件代码窗口
标准模块与窗体和报表模块主要区别在于存储位置及应用范围和生命周期。用户编写模块的真正作用是通过窗体和报表事件调用或嵌入模块,达到操作数据库的目的。
模块由通用段和过程组成,如图8-2所示。
图8-2 模块组成
通用段位于代码窗口的顶端,主要是声明语句,即一些变量定义语句。
过程由VBA语句组成,是一段相对独立的代码,完成一个特定任务。一个较大的任务通常由多个过程组成。过程与过程之间相互隔离,系统不会从一个过程自动执行到另一个过程,但一个过程可以调用另一个过程。
过程又分为子过程和函数过程两种。
(1)子过程
子过程都以Sub<过程名>()的形式开头,以End Sub结束,其中圆括号内过程参数。
Sub过程的语法格式如下:
[Private][Public][Static]Sub<过程名>(参数表)
语句
End Sub
说明:
·Private表示本过程为模块级过程,同模块其他过程可以调用该过程。
·Public表示本过程是全局过程,整个应用程序的所有模块中均或调用。默认值是Public过程。
·Static表示本过程声明的局部变量均为静态变量,变量的值在整个程序运行间一直保留,即使过程执行完毕也不例外。
·如果在过程调用时,有数据需要传递,必须在过程中指明参数,否则可以省略参数(无参过程)。
(2)函数过程
函数过程又称为Function过程,以关键字Function开头,以End Function结束,通常具有返回值。
Function过程语法格式如下:
[Private][Public][Static]Function<过程名>(参数表)As[类型]
语句
End Function
注意:
语法格式最后“As[类型]”是指返回值类型,如果省略返回值类型,则默认为变体型。函数过程的返回值,通过函数名带回。