文档库 最新最全的文档下载
当前位置:文档库 › 第7章宏和模块

第7章宏和模块

第7章宏和模块
第7章宏和模块

第 7 章 宏和模块

在 Access 中,除了数据表、查询、窗体、报表和数据页外,还有两个重要的对象,即宏 和模块。用户不需要了解语法,也不需要进行编程,只是利用几个简单的宏操作就可以将已 经创建的数据对象联系在一起,实现特定的功能。可以理解为:宏是由一些操作组成的集合, 创建这些操作可帮助您自动完成常规任务。

7.1【案例 19】创建“宏-提示信息”

【案例效果】

本案例将要创建“提示消息”宏,通过从宏内部运行,对“电器商品产地信息”进行查 询,如图 7-1-1B 图所示,并且显示包含提示信息“此查询结果不允许更改”的文本窗体,如 图 7-1-1A 图所示。

图 7-1-1A “提示信息”窗体 图 7-1-1B 查询窗口

通过完成此案例,我们将了解宏的概念;并掌握创建和保存宏的方法。

【相关知识】

1. 使用设计视图创建宏

宏设计视图用于宏的创建和设计,类似于窗体的设计视图。使用设计视图创建宏的操作 如下。

(1)打开要创建宏的数据库窗口。

(2)在“对象”列表框中选中“宏” ,然后单击数据库工具栏上的“新建”按钮,调出 宏设计视图。如图 7-1-10 所示。

图 7-1-10 宏“设计视图”窗口 图 7-1-11 设置宏操作

宏的设计视图的上半部分有两列,左边“操作”列为每个步骤添加操作,右边“注释” 列为每个操作提供一个说明,说明数据被 Access 所忽略。在宏的设计视图中,还隐藏了两列: “宏名”和“条件” 。单击工具栏中的“宏名”按钮和“条件”按钮就可以显示这两列。

(3)单击“操作”字段列的第一个单元格,再单击右侧下拉箭头,打开宏操作下拉列 表,从该列表中选择一个宏操作。

(4)在设计视图的下半部分,对所选宏操作的操作参数进行设置;同时所选定的操作 的解释说明出现在设计视图的右下角。如图 7-1-11 所示。

可以直接在宏的设计视图的“操作”列中输入操作名,也可从宏操作下拉列表中选择。 当添加一个操作后,应当在“注释”列中加入说明性的文字,便于将来使用时易于理解。

(5)重复步骤(3)~(4)的操作,直到输入所有的宏操作。

在定义一个或多个宏操作后,可能需要对其中的某些操作顺序进行改变。单击操作所在 行端,该行将反色显示,此时可将它拖动到想要改变的位置。

2. 为宏操作设置条件

对宏操作进行一定的条件设置是非常必要的,如果没有为宏指定任何条件,用户每次进 入数据库的时候,所指定的宏操作都要执行。那么就必须对宏操作设置一定的条件以控制其 运行。

其操作原理是:条件是逻辑表达式。宏将根据条件结果的真或假而沿着不同的路径执行。 如果这个条件为真,则 Access 将执行此行中的操作;在紧跟此操作的 “条件”栏内输入省 略号,就可以使 Access 在条件为真时执行这些操作;如果这个条件为假,Access 则会忽略这 个操作以及紧跟着此操作且在“条件”字段内有省略号的操作,并且移到下一个包含其他条 件或“条件”字段为空的操作。宏条件最多可达 255 字符。如果条件比限定的长,可转而使 用 VBA 程序。

用户可按照以下步骤对宏操作设置条件。

(1)单击数据库窗口中“对象”列表中的“宏”对象,用鼠标右键单击要修改的宏, 在弹出的快捷菜单中选择“设计视图”命令。

(2)选择需要设定条件的操作,将光标移动到该操作的“条件”行中,如果在宏设计 视图中没有显示“条件”列,可以单击工具栏上的“条件”按钮,如图 7-1-12 所示。

(3)在选取的“条件”行中,根据需要输入相应的条件表达式。用户可以使用“表达 式生成器”创建表达式,单击工具栏上的“生成器”按钮,可以打开“表达式生成器”对话 框,如图 7-1-13 所示。

图 7-1-12 显示“条件”字段 图 7-1-13 “表达式生成器”对话框

3. 宏的保存和执行

(1)保存宏

在创建宏之后必须进行保存。否则无法将其应用到窗体或报表等数据库对象。虽然,在 运行尚未保存的宏时,Access 会请求对宏进行保存,此时也可以对宏进行保存,但这样又可 能造成意想不到的错误。

(2)复制宏

在 Access 中,用户可以对整个宏进行复制,也可以只对宏中的某个操作进行复制。在复 制某个操作时,需要单击“行选定器”选定要复制的操作,然后再单击工具栏上的“复制” 按钮多选取的内容进行复制。

(3)宏的运行

在创建了宏之后,可以在不同的位置上运行宏。通常有以下几种方法。

● 在“数据库”窗口中选择“宏”对象,双击相应的宏名运行该宏。

● 在宏的设计视图窗口中单击工具栏的执行按钮,执行正在设计的宏。

● 在菜单栏中单击“工具”→“宏”→“运行宏”菜单命令,弹出“执行宏”对话框, 输入要运行的宏的名称。

● 在窗体、报表、控件和菜单中调用宏。

(4)自动执行宏

将宏的名字设为“AutoExec” ,则在每次启动该数据库时,将自动执行该宏。

(5)宏的嵌套

宏还可以嵌套执行,即在一个宏中可以调用另一个宏,在宏中加入操作 RunMacro,并 将操作 RunMacro 的参数“宏名”设为想要执行的宏。

4. 添加宏

除了可以在宏的设计视图中创建宏外,用户还可以利用拖动数据库对象的方法完成相应 的宏操作。如果要快速创建一个在指定数据库对象上执行操作的宏,用户可以从“数据库” 窗口中将对象直接拖放到宏“设计视图”窗口的操作行。

(1)在数据库窗口“对象”列表框中选中“宏” ,单击“新建”按钮,调出宏“设计视 图”窗口。

(2)单击“窗口”→“垂直平铺”菜单命令,使窗口全部显示在屏幕中。如图 7-1-14 所示。

图 7-1-14 排列所有的窗口

(3)在“数据库”窗口中单击要拖动的对象类型的组建选项卡,从中选取相应的数据 库对象,并拖动到某个操作行内。如果拖动的是宏,则添加执行此宏的操作;如果拖动其他 对象,则将添加打开相应对象的操作。如图 7-1-15 所示。

(4)单击宏“设计视图”窗口工具栏上“宏名”按钮,在宏“设计视图”窗口的最左 侧添加一个“宏名”列,在此处可以为创建的宏命名。

图 7-1-15 将对象拖动到宏“设计视图”窗口

5. 常用宏操作

Access 在宏操作列表中提供了 53 种操作。在宏中添加了某个操作之后,可以在设计视 图的下部设置这个操作的参数,通过参数向 Access 提供如何执行操作的附加信息。

Access 常用的宏操作及其功能如表 7-1。

表 7-1 Access 常用的宏操作及其功能

宏操作 功 能

AddMenu 向窗体或报表的定制菜单栏或快捷菜单添加一个下拉菜单

Beep 通过计算机的扬声器发出嘟嘟声

CancelEvent 取消引起宏运行的事件。不能在定义菜单命令的宏中火灾博阿彪的 OnClose 事

件中使用该操作

Close 关闭指定的 Access 窗口及其所包含的所有对象

CopyObject 把一个数据库中的对象复制到另一个数据库中

DeleteObject 删除任意表、查询、窗体、报表、宏或模块

Echo 控制在宏运行时中间操作的显示

FindRecord 查找符合参数指定条件的数据

GoToControl 把焦点移动打开的窗体、窗体数据表、表数据表、查询数据表中当前记录的特

定字段或空间上,此操作不能用于数据访问页

GoToPage 把光标移动到窗体中的指定页

GoToRecord 使指定的记录成为打开的标、窗体或查询结果集中的当前记录

Hourglass 在宏运行时将鼠标指针变为沙漏图标

Maximize 放大活动窗口,使其充满 Access 窗口

Minimize 将活动窗口缩小到只保留标题栏

MoveSize 移动或更改活动窗口的大小

MsgBox 显示包含警告信息或其他信息的消息框

Openform 打开一个窗体,选择窗体的数据输入与窗口方式来限制窗体所显示的记录

OpenModule 在设计视图中打开一个模块,并显示命名的过程

OpenQuery 运行一个选择查询,并在“数据表视图”、“设计视图”或“打印视图”中显

示记录集

OpenReport 在“设计视图”或“打印预览”中打开报表或立即打印报表

OpenTable 在“数据表视图”、“设计视图”或“打印预览”中打开报表,可以选择表的

输入方式

OutputTo 输出表、查询、窗体、报表或模块为另一种文件格式,文件格式包括 HTML

(*.Html)、Excel(*.xls)、快照(*.snp)、多信息文本(*.rtf)或文本(*.txt) PrintOut 打印打开的数据库中的很多对象,也可以打印数据表、报表、窗体、数据访问

页和模块

Quit 推出 Access 系统,可以指定在推出 Access 之前是否保存数据库对象

Rename 为当前数据库中的指定对象重新命名

Restore 将处于最大化或最小化的窗口恢复为原来的大小

RunApp 启动另一个 MS-DOS 或 Windows 过程

RunCode 调用 Visual Basic 的 Function 过程

RunCommand 运行 Access 的内置命令

RunMacro 运行宏,该宏可以在宏组中

Save 保存任意的表、查询、窗体、报表、宏或模块

SendObject 将指定的 Access 数据库对象包含在电子邮件信息中,以便察看和发送

SetValue 对 Access 中窗体、窗体数据表或报表上的字段、控件或属性的值进行设置 ShowAll Records 清楚以前应用于活动表、查询或窗体的所有筛选

StopAll Macro 停止所有的宏

StopMacro 停止当前正在运行的宏

TransferText 导出数据给文本文件或从文本文件导入数据

7.2【案例 20】创建“商品销售管理”主界面窗体

【案例效果】

本案例将设计一个“主界面”窗体,在“主界面”窗体中包含多个命令按钮控件,通过 “单击”不同的命令按钮,打开不同的窗体,实现用宏来控制打开窗体的操作,如图 7-2-1

所示。

在主界面窗口中,单击“商品信息维护”按钮将打开“商品信息维护”窗体,单击“电 器商品订单维护”按钮,将打开“电器商品订单维护”窗体,以此类推,单击不同的按钮, 将打开相应的窗体。

图 7-2-1 “商品销售管理”主界面窗体

通过上述实例了解宏组的概念并掌握使用宏进行控制的方法,以及了解宏的嵌套的方 法。

【相关知识】

1. 创建宏组

在创建宏时,如果要将几个相关的宏结合在一起完成某项特定的复杂操作,而不希望对 单个宏进行触发,那么用户可以将它们组织起来构成一个宏组。

宏组是在一个宏中包含若干个宏,这些宏都有各自的名称和相应的宏操作,当用户熟悉 了许多宏的功能之后,然后根据实际需求再对宏进行不同的组合。宏组是多个宏的集中管理, 如果想要使用宏组中的某个宏,不能直接使用宏的名字,要使用语法“宏组名.宏名” 。

下面介绍一下在 Access 中创建宏组的方法。

(1)在数据库窗口“对象”列表框中选择“宏” ,单击“新建”按钮,调出宏“设计视 图”窗口。

(2)单击工具栏上“宏名”按钮,Access 在宏“设计视图”窗口中的上半部分的最左 侧添加一个“宏名”列,如图 7-2-10 所示。

(3)在新添加的“宏名”列的第 1 个单元格单击,然后输入宏组的名称“宏组 1” ,如 图 7-2-11 所示。

图 7-2-10 显示“宏名”列 图 7-2-11 输入宏组的名称

(4)在“操作”列的第 1 个单元格单击,然后单击下拉箭头,在打开的下拉列表中选 择“OpenTable”操作,在窗口的下方,选择操作参数,如图 7-2-12 所示。在“表名称”中 选择“电器商品信息” ,在 “数据模式”中选择“增加” 。

(5)在“操作”列的第 2 个单元格单击,然后单击下拉箭头,在打开的下拉列表中选 择“Close”操作,在窗口的下方,选择操作参数,如图 7-2-13 所示。在“对象类型”中选择 “表” ,在“对象名称”中选择“电器商品信息” 。

图 7-2-12 设置“OpenTable”操作参数 图 7-2-13 设置“Close”操作参数

(6)保存宏组,用刚才步骤(2)输入的“宏组 1”作为宏组的名字,同时,该名字也 是显示在“数据库”窗口“宏”对象中的宏和宏组列表中的名字,如图 7-2-14 所示。可以按 照上述方法添加两个或多个宏组,每个宏组中也可以包含多个宏操作。

2.宏的嵌套

在 Access 中,用户可以方便地完成对一个已有宏的引用,这可以节省用户的大量时间。 如果用户要从某个宏中运行另外一个宏,可以使用 RunMacro 操作,然后将 RunMacro 的操 作参数“宏名”设置为希望运行的宏名称。

RunMacro 操作的效果类似于单击“工具”→“宏”→“运行宏”命令后再选择宏名。 唯一不同之处在于“工具”→“宏”→“运行宏”命令只运行一次宏,而采用 RunMacro 操 作可以多次运行宏。

注意 RunMacro 操作除了“宏名”参数外还有两个参数: “重复次数” ,用来指定重复运 行宏的最大次数; “重复表达式” ,这是一个表达式,计算结果味“True” (-1)或“False” (0)。 每次 RunMacro 操作运行时都回计算该表达式,当结果为“False” (0)时,则停止被调用的 宏。

具体的方法按照以下步骤进行。

(1)打开数据库,在“对象”列表框中单击“宏” ,在右边的列表框中选中要嵌套的宏 或新建一个宏。

(2)在操作列中单击单元格,在打开的下拉列表中选择“RunMacro”操作,然后在窗 口下方的“操作参数”中的“宏名”文本框中设置为要引用的宏,如图 7-2-15 所示。

根据需要设置“重复次数”和“重复表达式” 。

利用宏的嵌套功能,用户在创建新宏时,便可以根据需要引用已创建宏中的操作了,而 不用再在新建的宏中逐一添加重复操作。用户还可以在 VBA 程序中完成相同的操作,只要 将 RunMacro 操作添加到 VBA 程序中即可。

图 7-2-14 保存宏组 图 7-2-15 宏的嵌套

注意:每次调用的宏运行结束后,Access 都会返回到调用宏,继续进行该宏的下一个操 作。用户可以调用同一宏组的宏,也可以调用另一宏组中的宏。如果在“宏名”文本框中输 入某个宏组的名称,则 Access 将运行该组中的第 1 个宏。

3. 制作系统登录窗体

“用户登录”是数据库应用系统的密码识别窗体, “用户登录”窗体要有一个“文本框” 和一个“组合框” ,一个“命令按钮”等控件,使用“组合框”控件选择操作员,使用“文本 框”控件接受操作员口令,是用“命令”按钮的事件代码(宏),检验操作员口令是否正确, 达到控制系统操作的窗体启动的目的。用户登录的窗体如图 7-2-16。

(1)打开数据库,新建一个宏,在“宏”窗口中选择宏操作,再选取宏操作参数,如 图 7-2-17。宏操作为“OpenForm” , “窗体名称”参数为“系统登录” 。

图 7-2-16 登录窗体 图 7-2-17 “宏”窗口

(2)在“宏”窗口中,单击工具栏上的“条件”按钮,在窗口中显示“条件”列,然 后在“条件”列输入条件表达式“[Forms]![系统登录]![Text2]="abc" And [Forms]![系统登

录]![Text4]="123"” ,如图 7-2-18。

(3)在“宏”窗口,单击“关闭”按钮,调出“另存为”窗口,如图 7-2-19。

(4)在“另存为”窗口中,输入宏的名字“口令宏”

,然后单击“确定”按钮,保存宏,

结束宏的创建。将“口令宏”作为登录窗体中命令按钮的执行参数。

图 7-2-18 输入条件 图 7-2-19 保存宏

7.3【案例 21】创建“商品

产地信息追加”模块

【案例效果】

本案例将在“商品产地信息追加”

窗体中,创建 “追加记录”模块,使用

VBE (Microsoft Visual Basic Editor )建

立一个全局模块“追加记录” ,并在窗体

“商品产地信息追加”中创建一个“追

加记录”按钮,在这个按钮上使用建立

的模块来保存新增加的记录,效果如图

7-3-1 所示。

通过完成案例“追加记录的模块” ,

了解模块的概念;掌握使用模块的方法。

【相关知识】

1. 模块

模块一般是以 VBA 声明、语句和过程作为一个独立单元的结合。每个模块独立保存,并 对处于其中的 VBA 代码进行组织。

Access 2003 包含有两种基本类型的模块,一种是类模块,另一种是标准模块。它们的主 要区别在于范围和生命周期方面。独立的类模块没有相关的对象,声明的任何常量和变量都 仅在代码运行的时候是可用的。

(1)类模块:类模块是指包含新对象定义的模块。当用户新建一个类的实例的同时也 就创建了新的对象,在模块定义的任何过程都会变成这个对象的属性和方法。一般地,类模

图 7-3-1 在“商品产地信息追加”窗体中追加记录

块又可以分成窗体模块、报表模块和独立的类模块 3 种。

● 窗体模块是指与特定的窗体相关联的类模块。当用户向窗体对象中增加代码时,用 户将在 Access 数据库中创建新类。用户为窗体所创建的事件处理过程是这个类的新方法。用 户使用事件过程对窗体的行为以及用户操作进行响应。

● 报表模块是指与特定的报表相关联的类模块,包含响应报表、报表段、页眉和页脚 所触发的事件的代码,对报表模块的操作与对窗体模块的操作相类似。

● 独立的类模块是指在 Access 2003 中,类模块可以不依附于窗体和报表而独立存在。 这种类型的类模块可以为自定义对象创建定义。独立的类模块列在“数据库”的窗口中,用 户可以方便地在那里找到它。

(2)标准模块:标准模块是指存放整个数据库可用的函数和子程序的模块。它包含与 任何其他对象都无关的通用过程,以及可以从数据库的任何位置运行的常规过程。

(3)创建模块

创建模块的操作步骤为:在数据库窗口中,单击选中“对象”列表中的“模块”对象。 单击“新建”按钮,调出模块编辑窗口,在模块编辑窗口中输入模块程序代码。如图 7-3-2 所示。

(4)调用模块

创建模块后,就可以在数据库中使用该模块。对于事件过程,调用时可以将其与窗体的 事件联系起来,当事件发生时,相应的过程既可被执行,对于所建立的模块对象,可直接通 过模块名进行调用。

2. 过程

模块将数据库中的 VBA 函数和过程放在一起,作为一个整体来保存。利用 VBA 模块可 以开发十分复杂的应用程序。

一个过程是一个 VBA 函数单元,过程被定义为子程序,在其他程序中通过名字访问。 过程可以分为两类:子过程和函数过程。子过程(Sub)是指那些用来执行一个操作或多个 操作,而不会返回任何值的过程。Access 2003 中的事件响应模块常常使用子过程来创建。函 数过程(Function)也可以简称函数,是指可以返回一个值的过程。这个特点使得用户可以 在表达式中使用它们。VBA 包含可很多内置的函数,用户可以很方便的从中调用它们。

对于编辑完成特定任务的小程序,我们将其命名为过程,通过调用这个过程名来调用该 程序。VBA 使用的过程有子(Sub)过程、函数(Function)过程和属性(Property)过程。其中 Sub 过程不返回值,Function 过程返回一个值,Property 过程可返回并且可以赋值,还可以设置 对象的指向。

(1)Sub 子过程:Sub 的功能是将一定的语句集合起来,可接收一定的参数,并完成一 定的任务。其格式如下:

[Private|Public][Static]Sub 子过程名([参数[As 类型],……])

语句组

[Exit Sub]

语句组

End Sub

参数列表中如果有多个参数,则多个参数中间用逗号分开。过程每被调用一次,Sub 与 End Sub 之间的语句就执行一次。Sub 过程可以被置于标准模块、类模块和窗体模块中。缺省 时,Sub 过程都是 Public 的,表示在程序的任何地方都可以调用这些过程。

在 VBA 中,Sub 过程有两类,即通用过程和事件过程。通用过程告诉应用程序如何执行 一个特定任务。一旦定义了一个通用过程,它必须专门由应用程序来触发。与通用过程相对 应的是事件过程,事件过程只能由用户动作或系统触发。

(2)Function 过程:VBA 本身包括系统提供的内部函数,如 Sin、Sqr 等。另外,用户 还可以开发自己的函数过程。函数过程是一种特殊的过程,它可以向调用它的过程返回一个 值。在函数定义时,必须同时定义函数参数的类型以及返回值的类型。函数过程的一般格式 为:

[Private|Public][Static]Function 函数名([参数[As 类型],……])[As 类型]

语句组

函数名=表达式

[Exit Sub]

语句组

End Function

与 Sub 过程一样,Function 过程也是一个独立的过程,它可以接收参数,执行一系列的 语句并改变其自变量的值。与 Sub 过程不同的是,它具有一个返回值,而且有数据类型。

(3)Property 过程:Property 过程主要用来创建和控制自定义属性。一般来说,当需要 为窗体、标准模块和类模块创建只读属性时、当代码必须在属性值被定义时,可以使用 Property 过程。Property 过程定义格式如下:

[Private|Public][Static]Property{Get|let|Set} 属性名[参数][As 类型]

语句组

End Property

格式中 Property Get 是设定一个属性的值,Property Let 是得到一个属的值,Property Set 是设置一个对象的指向。

3. 将宏转化为 VBA 代码

如果要在应用程序中使用 VBA,用户可以将已有的宏转换为 VBA 代码。如果希望整个 数据库中都可以使用代码,用户可以直接在“数据库”窗口的对象“宏”中进行转换;如果 要让代码和窗体、报表等数据库对象保存在一起,则可以在相关窗体或报表的设计视图中转 换。

(1)在设计视图中转换 VBA 代码

以窗体为例,使用设计视图,将数据库中的窗体转换为 VBA 代码,这样就可以将窗体和 VBA 代码保存在一起了。

● 打开“电器商品销售”数据库,单击“窗体” ,选中其中的 “商品产地信息追加” 窗 体,然后单击“视图”→“设计视图”命令,在设计视图中打开“商品产地信息追加”窗体。

● 在设计视图中,单击“工具”→“宏”→“将窗体的宏转换为 Visual Basic 代码”命 令,调出“转换窗体宏”对话框,如图 7-3-8 所示。

图 7-3-8“转换窗体宏”对话框 图 7-3-9 转换结束消息框

● 清除第 1 个复选框,单击“转换”按钮,Access 弹出“将宏转换到 Visual Basic”消 息框表示转换结束。如图 7-3-9 所示。

● 单击“确定”按钮关闭消息框,然后单击工具栏上的“代码”按钮,打开“Visual Basic 编辑器”窗口,其中含有由宏转换的代码。如图 7-3-10 所示。

图 7-3-10 转换后的 Visual Basic 代码

当 Access 碰到 VBA 代码行中撇号(’)时,将忽略该行撇号后的部分。在 VBA 代码行 中的任何部分,用户都可以使用撇号插入注释。

(2)在“数据库”窗口转换 VBA 代码

从“数据库”窗口进行宏转换时,宏操作将被保存为全局模块中的一个函数,并在“数 据库”窗口的对象“模块”中保存转化的宏。从“数据库”窗口中转换的宏可供整个数据库 使用,且宏组中的每个宏不是转换成子过程,而是转换为不同的函数。

将在数据库中创建的宏转换为 VBA 代码。

● 单击“数据库”窗口中“对象”列表框中的对象“宏” ,然后在右边的列表框中选中 需要进行转换的宏。

● 单击“工具”→“宏”→“将宏转换为 Visual Basic 代码”命令,调出“转换宏”对 话框。如图 7-3-11 所示。

● 单击“转换”按钮关闭对话框,Access 将调出“将宏转换到 Visual Basic”的消息框, 单击“确定”按钮结束转换过程。如图 7-3-12 所示。

图 7-3-11 “转换宏”对话框 图 7-3-12 转换结束消息框

除了上述方法以外,还可以单击“文件”→“另存为”命令,或者右击需要转换的宏, 然后在调出的快捷菜单中单击“另存为”命令。在调出的“另存为”对话框中“将宏另存为” 文本框中输入新的模块名,并从“保存类型”文本框中选择“模块”选项,然后单击“确定” 按钮关闭对话框,这时 Access 调出相应的“转换宏”对话框。

4. 使用 VBA 编程环境

编写和调试程序代码离不开编辑环境。既然要编写 VBA 程序,就需要先了解 VBA 的开 发环境。Access 提供的 VBA 编程环境即 Microsoft Visual Basic Editor (VBE )。通常,有两 种情况需要编写 VBA 程序代码,一是为某个窗体或报表中的模块编写程序代码,二是为窗 体或报表外的模块编写代码。因此就有两种进入 VBE 进行编辑操作的方法。

(1)浏览“VBA 编辑器”窗口

用户可以单击“数据库”窗口中的“对象”列表框中的“模块” ,然后单击工具栏上的 “新建”按钮打开“Visual Basic 编辑器”窗口,如图 7-3-13 所示。

“Visual Basic 编辑器”主要包括主窗口、模块代码窗口、工程资源管理器和模块属性窗 口等 4 部分。所有的 VBA 程序都是在模块代码窗口中编写的。

模块代码窗口是用来输入“模块”每部的程序代码的,工程资源管理器则用来显示该数 据库中所有的“模块”对象。当用户单击这个窗口内的任一“模块”选项时,就会在模块代 码窗口上显示该模块的 VBA 程序代码,同时“模块属性”窗口上就可以显示当前选定的“模 块”具有的各种属性。

在 VBA 中,由于在编写代码的过程中会出现各种难以预料的问题或错误,所以编写的 程序很难一次通过,这时就需要一个专用的调试工具快速查找程序中的问题,以便消除代码 中的错误。 图 7-3-13 “Visual Basic 编辑器”窗口

“Visual Basic 编辑器”中的“本地窗口” 、 “立即窗口”和“监视窗口”就是专门用来

理器 模块代码窗口 主窗口

调试 VBA 程序的。用户可以在“Visual Basic 编辑器”窗口中单击“视图”→“本地窗口” ( “立即窗口”或“监视窗口” )命令打开“本地窗口” (“立即窗口”或“监视窗口” )即可。

(2)通过“Visual Basic 编辑器”中的模块编写“Visual Basic”代码实现特定功能

● 在“Visual Basic 编辑器”窗口中,单击“插入”→“模块”命令,添加一个模块, 然后再单击“插入”→“过程”命令,或单击工具栏上的“插入过程”按钮,调出“添加过 程”对话框。如图 7-3-14 所示。

在“添加过程”对话框中输入过程名称并选择过程的类型和作用范围,同时还可以指定 过程中使用的变量在推出过程后是否保持其值不变。如果用户选择“把所有局部变量声明为 静态变量”复选框,则在过程中“Visual Basic”自动在局部变量前面添加 Static 关键字。过 程定义完毕后,单击“确定”按钮即可。

● 切换到“Visual Basic 编辑器”的“代码窗口” ,上方右侧的文本框中显示的是刚刚添 加的过程名,而在下方的空白区域只能给则新添加了两行代码,该“过程”用到的所有代码 都将在这两行之间进行编写,如图 7-3-15 所示。

● 在代码窗口中添加 VBA 语句。

● 单击“保存”按钮保存代码,并给模块命名。

● 关闭“Visual Basic 编辑器”窗口,切换到“数据库”窗口,刚保存的模块的名称出 现在“模块”对象列表框中。

图 7-3-14 “添加过程”对话框 图 7-3-15 “模块代码”窗口

(2)通过窗体的事件属性打开“Visual Basic 编辑器”窗口,然后再编写程序代码实现 同样的功能。

● 单击“数据库”窗口“对象”列表框的“窗体” ,选择需要添加宏操作的窗体,然后 单击“新建”按钮,调出“新建”对话框,如图 7-3-16 所示。

● 在“新建”对话框中选择“设计视图”选项,并单击“确定”按钮,调出窗体的设 计窗口,如图 7-3-17 所示。

图 7-3-16 “新建窗体”对话框 图 7-3-17 窗体“设计视图”窗口

● 在窗体“设计视图”窗口中右击窗体左上角的“窗体选择器”并在快捷菜单中单击 “属性”命令,在调出的“属性”对话框中单击“事件”选项卡,如图 7-3-18 所示。

● 将光标插入到“击键”文本框中,然后单击右侧出现的“生成器”按钮,调出“选 择生成器”对话框,如图 7-3-19 所示。

● 在“选择生成器”对话框中,选择“代码生成器”选项,然后单击“确定”按钮。

● Access 打开“Visual Basic 编辑器”窗口。如果用户需要改变事件的触发时机,则单 击“代码窗口”右上方的列表框从中选择需要的事件。如果要对其他数据库对象或控件添加 操作,则单击“代码窗口左上方的列表框从中选择合适的数据库对象或控件即可。

● 按照前面介绍的方法编写 VBA 程序代码并保存。用户可以在一个代码行中输入多个 独立的语句,中间应适用冒号(:)隔开。如果语句很长,已经超出了屏幕宽度,用户还可以 用行连续符号将语句写入下一行,用户只需在行的间断点处输入空格和一个下划字符(_), 然后按“回车”键将光标移到下一行即可。

图 7-3-18 “属性”对话框 图 7-3-19 选择生成器

相关文档