Download - Access VBA 程序设计
Access VBA 程序设计
本章重点• Access Basic 编程语言• 运算符、函数与表达式• Access Basic 语句• 模块的使用• Access Basic 的扩展性
VBA 程序的开发环境• VBA 中的程序与函数共有4种,分别是:
一般程序( Sub )、事件程序( Event )、属性程序( Property )和函数( Function )
• VBA 程序窗口有代码窗口、立即窗口、本地窗口、监视窗口、工程资源管理器和属性窗口等6种窗口。
Access Basic 编程语言• 在进行 Access 的 VBA 编程之前,要了
解 Access Basic 的基本编程语言• 一、数据类型• 二、变量定义• 三、变量的作用域
一、数据类型在 Access 中可用的数据类型分为3种:标准型、自定义型、对
象型。1 . 标准型,共有7种。 (1)整数:后缀符为“%” (2)长整数:后缀符为“ &” (3)单精度:后缀符为“ !” (4)双精度:后缀符为“ #” (5)货币:后缀符为“ @” (6)字符串:后缀符为“ $” (7)变体:可用于任何数据类型。2 . 自定义型:它是用关键词 Type 标本的,如:
例如Type Point
X as Integer
Y as integer
End Type
即定义了一个点( point )的数据结构,声明和使用变量形式如:
Dim pCurPoint as Point
PCurPoint.X=10
PCurPoint.Y=10
3 . 对象型Access 中有17种对象型,是在程序中操作
数据库的途径,操作数据库都是通过操作各种数据库对象的属性和方法来实现的。分别为:
Database,Workspace,Document,Container,User,Group,Report,Control,TableDef,QueryDef,Recordset,Field,Index,Relation,Parameter,Property.
二、变量定义
在 Access 中用来定义变量的关键词有: Dim,Static,Global,ReDim.
1.Dim, 这是使用最多的一个关键词,其语法定义如下:
Dim 变量名 As 类型名Dim 数组名(下标范围)A s 类型名Dim 动态数组名() A s 类型名Dim 数组名(下标开始值 To 下标结束值) As
类型名
例如• Dim nNum(10,10) As Integer
• Dim nNum(-10 To 10,1To 5) As Integer
2.Static, 用来定义一个模块级的静态变量。语法格式为:
Static 变量名 As 类型Static 数组名(下标) As 类型3.Global, 用来定义一个全局变量。语法格式为:Global 变量名 As 类型名Global 数组名(下标范围) As 类型名Global 动态数组名() As 类型名
例如: Global nNumber As Integer
Global nNumber ()As Integer
Global nNum(10,10) As Integer
4.ReDim• 4.ReDim, 该语句与 Dim 语句联合起来使用,来
实现在 Access 中动态分配内存。使用方法为:首先在代码中使用 Dim 或 Global 来声明一个动态数组,但不确定数组的宽度和维数,在需要使用数组来存储数据时,使用 ReDim 来声明数组的宽度和维数,但这时已经不能更改数组的类型了。使用 ReDim 可以为一个动态数组分配内存,多次指定不同的宽度,但多次定义时,维数必须和第一次使用 ReDim 定义的维数一致,不能再次进行修改了。另外, ReDim 语句之后还可以使用修补词“ Preserve” 将原数组中已经分配的单元保留下来,这时当第二次使用 R 分配内存时,只能在最后一维上变动。例如:
下面的例子是非法操作:ReDim nNum(5,5,10)
ReDim Preserve nNum(5,7,10)
应该使用下面的代码:ReDim nNum(5,5,10)
ReDim Preserve nNum(5,5,30)
动态分配数组后,有时需要知道数组的上、下界,在 A 中使用 LBount(),UBound() 就可以测试出数组的上、下界。具体语法如下:
Lbound( 数组名 [ ,维数 ])
例如:ReDim strName(0,To 10,2 To 10,-1 To 10)
LBount(strName,1) 的返回值为 0 ; LBount(strName,2) 的返回值为 2 ; LBount(strName,3)的返回值为 -1 。
UBound( 数组名 [ ,维数 ] )可以返回数组的上界,使用情况和 LBount 相同。
三、变量的作用域程序中声明的每个变量都有作用域,超出它的作用
域后,变量就失去作用,成为没有定义的字符。Access 中变量的作用域有 3 类。
(1) 全局变量,这种变量在数据库应用系统中的所有地方都可以使用,定义一个全局变量只能在模块对象中进行,使用 Global 来定义。
(2) 对象级变量,可以在一个对象(窗体、报表、模块)中的任何地方使用,不能跨越所在的对象。在对象的 General 中进行定义,使用 Dim 关键词。
(3) 模块级变量,只能在一个模块中使用,不能跨出模块,这种变量即常用的局部变量。
10.4 Access Basic 语句Access 支持结构化语言中的顺序、分支、循环语
句,另外还有一些特殊作用的功能语句。一、 GOTO 语句 VBA 的 GOTO Labal 语句可以跳过一些代码块
到 Labal 的位置,并从该点继续执行。 Labal 标号要从代码的最左边(第一列)开始写,这个位置通常会影响代码的缩进格式。
一般情况下不要使用 GOTO 语句。在 VBA 程序中使用 GOTO 语句的唯一一个目的就是用 On Error GoTo Labal 语句来处理错误。
二、 IF 语句If/Then/End if 语句是典型的判断分支控制语句。语
法格式为:If 条件 [=True] Then …条件为真时执行的语句End if 另外还可以使用嵌套 IF 语句格式:If条件 1[=True]Then…条件为真时执行的语句Elself条件 2[=True] Then…条件 1 不成立但条件 2 成立时,执行的语句End if
例如下面的 IF 语句用来判断一个字符是否是字母,而且判断它的大小写。
If Asc(strChar)>63 And Asc(strChar<91) Then
strCharType=“大写字母子”Elself Asc(strChar)>96 And Asc(strChar<123) Then
strCharType=“小写字母”End If
二、 Select 语句当有多种选择时,使用 If …Else 语句,这样的语句需要多重嵌套,使得程序十分复杂,不容易读,这时就可以使用 Select 语句, Select 语句是一个多分支控制语句。语法格式为:
Select Case 表达式 Case 值 1 语句 1 Case 值 2 语句 2 …Case Else 语句End select
例如:下面语句用来对字母进行判断Select Case strChar Case “A”To “Z” strCharType=“大写字母” Case “a”To “z” strCharType=“小写字母” Case “0”To “9” strCharType=“ 数字字母” Case “!”,”?”,”.”,”,””;” strCharType=“ 标点符号” Case “” strCharType=“空格” Case <32 strCharType=“ 特殊字母” Case Else strCharType=“ 其它字母”End Select
四、 For 语句
For 语句是最常用的循环控制语句。语法格式为:For 变量 = 开始值 To 结束值 Step 步长 循环执行语句Next 变量例如:下面使用 For 语句为数值赋初始值。For nLeter=1 To 26
strChar(nLeter)=Char(nLeter+63)
Next nLeter
注意 当 STEP 不写时,默认的步长是 1 。
五、 DO 语句
Do 语句是另外一种循环语句,有两种格式:Do While…Loop 和 Do Until…Loop.
1.Do while 条件 [= True]
循环语句,含有“条件”的变更语句Loop
2.Do Until 条件 <>True( 或 Not 条件) 循环语句Loop
六、功能语句• Appactivate
• Beep
• ChDrive
• Data
• Delete Control
• Delete Report Control
• DoCmd
• Erase
• MsgBox 使用格式为 :MsgBox(msg [,type[,title]]])
• Set 使用格式为: Set ObjName=ObjectValue.
• Time