(1)Sub过程
过程是构成程序的一个模块,往往用来完成一个相对独立的功能。过程可以使程序更清晰、更具结构性。
过程是由Sub和End Sub语句包含起来的VBA语句,该语句格式如下:
[Private|Public|Friend]Sub子过程名(参数列表)
<子过程语句1>
ExitSub
<子过程语句2>
End Sub
例如:
Sub cmdSmallFont_Click()
With Selection.Font
.Name="Arial"
.FontStyle="Regular"
.Size=16
End With
End sub
此过程实际上是一个事件过程。这个过程的名字是由一个对象的名字cmdSmallFont和一个事件的名字Click组成的,两者之间用下划线分开。也就是说,CmdSmallFont是一个命令按钮的名字,当单击这个命令按钮时,就会运行这个事件过程。
下面是一个简单的密码验证的Sub过程。
Sub CheckPwd()
Dim Pwd As String
Pwd=InputBox("请输入密码:")
If Pwd="Access 2016"Then
MsgBox"密码正确,欢迎使用本系统!"
Else
MsgBox"密码错误!"
End If
End Sub
(2)Function函数
函数实际是实现一种映射,它通过一定的映射规则,完成运算并返回结果。在Access中,包含了许多内置函数(已经在前面介绍过)。除此之外,用户也可以根据需要创建自定义函数。函数有返回值,可以在表达式中使用。函数以关键字“Function”开始,并以“End Function”语句结束。该语句格式如下:
[Private|Public|Static]Function函数名(参数行)[As数据类型]
<函数语句1>
ExitFunction
<函数语句2>
End Function
例如:一个求两数之和的函数。(https://www.xing528.com)
Public Function SumItUp(m,n)
SumItUp=m+n
End Function
(3)模块
模块作为Access的对象之一,主要用来存放用户编写的VBA代码,如同窗体是存放控件对象的容器一样,模块是代码的容器。Aceess有两种基本类型的模块:标准模块和类模块。
①标准模块:标准模块是指存放整个数据库都可以用的子程序和函数的模块;
②类模块:VBA允许用户创建自己的对象,对象的定义包含在类模块中。
(4)变量的作用域和生存期
①变量的作用域
不同的变量在VBA过程里有不同的作用范围,称为作用域。它定义某个特定的变量在同一个过程、其他过程、其他VBA过程里的可用性。变量在VBA里可以是下面三种级别的作用域:过程级别(局部)变量、模块级别变量、工程级别变量。
过程级别(局部)变量
关键字Dim在模块中的位置决定了该变量的范围。在VBA过程中用Dim关键字声明的变量拥有过程级别的范围,过程级别的变量经常被称为局部变量。局部变量只能在声明后的过程里面使用,未声明的变量是过程级别的变量。在它的范围内,变量的名称必须是唯一的,这意味着不可以在同一个过程里使用同样的名称来声明两个变量。但是,可以在不同的过程里面使用同样的变量名称。
模块级别变量
局部变量有助于节省内存空间,一旦过程结束,该变量便立即消失,并且释放该变量占用的内存空间。然而,在编程中,经常需要变量在本过程结束后仍然在其他过程里可用,这种情形需要改变变量的范围,需要定义一个模块级别的变量,而不是过程级别变量。要定义模块级别的变量,必须将关键字Dim放在模块里任何过程的上面,在关键字Option Explicit的下面。例如,将slsTax设置为模块里的任何过程都可以使用的变量,按照下述方法声明slsTax变量。
Option Explicit
Dim slsTax As Single
Sub CalcCost()
<过程指令>
End Sub
工程级别变量
变量用关键字Public(而不是Dim)声明时,拥有工程级别作用域,这意味着可以在VBA任何模块里使用。若要在一个打开的VBA工程的所有过程里使用某个变量时,必须用Public关键字来声明它。例如:
Option Explicit
Public slsTax As Single
Sub CalcCost()
<过程代码>
End Sub
注意,变量slsTax在模块上面以Public关键字声明的,它将会在该VBA工程里的任何过程里都可用。
②变量的生命周期
除了作用域之外,变量还有生命周期,变量的生命周期决定了该变量能保存它的值多长时间。
一旦该工程打开,模块级别和工程级别的变量就会保留它们的值。按照变量的生命周期,可以将局部变量分为动态局部变量和静态局部变量。
动态局部变量
动态局部变量是以Dim…As语句说明的局部变量,每次子过程或函数过程被调用时会被设定为默认值。数值数据类型为0,字符串则为空字符串(“”)。这些局部变量与子过程或函数过程持续的时间是相同的。
静态局部变量
用Static关键字代替Dim来定义静态局部变量,该变量可以在过程的实例间保留局部变量的值。静态变量的持续时间是整个模块执行的时间,但它的作用域仍然由其定义的位置来决定。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
