在 Microsoft Access 中,附加到用户界面 (UI 的宏) 命令按钮、文本框、窗体和报表等对象称为 UI 宏。 这将它们与附加到表的数据宏区分开来。 使用 (UI) 宏自动执行一系列操作,例如打开另一个对象、应用筛选器、启动导出操作以及许多其他任务。 本文介绍新重新设计的宏生成器,并介绍创建 UI 宏所涉及的基本任务。
注意: 本文不适用于 Access Web 应用。
本文内容
概述
宏可以包含在宏对象 (有时称为独立宏) ,也可以嵌入窗体、报表或控件的事件属性中。 嵌入宏将成为嵌入它们的对象或控件的一部分。 宏对象在导航窗格中的“ 宏”下可见。嵌入的宏不是。
每个宏由一个或多个宏操作组成。 根据你正在处理的上下文,某些宏操作可能不可用。
宏生成器
下面是宏生成器的一些主要功能亮点。
-
操作目录 宏操作按类型进行组织,可搜索。
-
IntelliSense 键入表达式时,IntelliSense 会建议可能的值,并允许你选择正确的值。
-
键盘快捷方式 使用组合键可更快、更轻松地编写宏。
-
程序流 使用注释行和操作组创建更易读的宏。
-
条件语句 允许更复杂的逻辑执行,支持嵌套 If/Else/Else If。
-
宏重用 操作目录显示已创建的其他宏,以便将它们复制到正在处理的宏中。
-
更轻松的共享 复制宏,然后将其作为 XML 粘贴到电子邮件、新闻组文章、博客或代码示例网站。
下面的视频将引导你了解宏生成器的主要区域。
创建独立宏
此过程创建一个独立宏对象,该对象将显示在导航窗格中 的“宏 ”下。 在应用程序的许多位置重复使用宏时,独立宏非常有用。 通过从其他宏调用宏,可以避免在多个位置复制相同的代码。
-
在“创建”选项卡上的“宏和代码”组中,单击“宏”。
Access 将打开宏生成器。 -
在“快速访问工具栏”上,单击“ 保存”。
-
在“ 另存为 ”对话框中,键入宏的名称,然后单击“确定”。
-
继续阅读将 操作添加到宏部分。
创建嵌入宏
此过程创建嵌入到 对象的事件属性中的宏。 此类宏不会显示在导航窗格中,但可以从“加载时”或“单击时”等事件调用。
由于宏成为窗体或报表对象的一部分,因此建议使用嵌入宏自动执行特定于特定窗体或报表的任务。
-
在导航窗格中,右键单击将包含宏的窗体或报表,然后单击“ 布局视图”。
-
如果尚未显示属性表,请按 F4 显示该表。
-
单击包含要在其中嵌入宏的事件属性的控件或节。 还可以使用属性表顶部的“ 选择类型 ”下的下拉列表选择控件或节 (或整个窗体或报表) 。
-
在“属性表”任务窗格中,单击“ 事件 ”选项卡。
-
单击要触发宏的事件的属性框。 例如,对于命令按钮,如果希望在单击按钮时运行宏,请在“ 单击” 属性框中单击。
-
如果属性框包含单词 [Embedded Macro],则表示已为此事件创建了宏。 可以通过继续执行此过程中的剩余步骤来编辑宏。
-
如果属性框包含 单词 [Event Procedure],则表示已为此事件创建了 Visual Basic for Applications (VBA) 过程。 在事件中嵌入宏之前,需要删除该过程。 可以通过删除 单词 [事件过程] 来执行此操作,但应首先检查事件过程,以确保删除它不会破坏数据库中所需的功能。 在某些情况下,可以使用嵌入的宏重新创建 VBA 过程的功能。
-
单击“ 生成 ”按钮 。
-
如果出现“ 选择生成器 ”对话框,请确保选中“ 宏生成器 ”,然后单击“ 确定”。
Access 将打开宏生成器。 继续下一部分,向宏添加操作。
向宏添加操作
操作是构成宏的单个命令,每个命令都根据它的作用来命名,例如 FindRecord 或 CloseDatabase。
步骤 1:浏览或搜索宏操作
添加操作的第一步是在 “添加新操作”下拉列表或“操作目录” 中找到它。
注意:
-
默认情况下, “添加新操作” 下拉列表和“操作目录”仅显示将在非受信任数据库中执行的操作。 若要查看所有操作,请执行以下操作:
-
在“ 设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 显示所有操作”。
-
-
如果未显示操作目录,请在“ 设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 操作目录”。
若要查找操作,请使用以下方法之一:
-
单击“ 添加新操作” 下拉列表中的箭头,然后向下滚动以查找操作。 首先列出程序流元素,然后按字母顺序列出宏操作。
-
在“操作目录”窗格中浏览操作。 操作按类别分组。 展开每个类别以查看操作。 如果选择操作,操作目录底部会显示操作的简短说明。
-
通过在窗格顶部的“搜索”框中键入操作,在“操作目录”窗格中搜索操作。 键入时,将筛选操作列表以显示包含该文本的所有宏。 Access 在宏名称及其说明中搜索你输入的文本。
步骤 2:向宏添加操作
找到所需的宏操作后,请使用以下方法之一将其添加到宏:
-
在“添加新操作”列表中选择一个 操作 ,或开始在框中键入操作名称。 Access 会在显示“ 添加新操作” 列表的位置添加操作。
-
将操作从“操作目录”拖动到宏窗格。 此时将显示一个插入栏,显示释放鼠标按钮时将插入操作的位置。
-
双击操作目录中的操作。
-
如果在宏窗格中选择了某个操作,Access 会将新操作添加到所选操作的正下方。
-
如果在宏窗格中选择了 组、 If、 Else If、 Else 或 Submacro 块,Access 会将新操作添加到该块。
-
如果在宏窗格中未选择任何操作或块,Access 会将新操作添加到宏的末尾。
注意:
-
如果已创建一个或多个宏,则会在操作目录中的“ 在此数据库中” 节点下列出它们。
-
将独立宏 (宏 ) 宏下 列出的宏拖入宏窗格中,将创建运行所拖动宏的 RunMacro 操作。 然后,可以使用下拉列表调用 submacros(如果存在)。
-
如果只想将操作从独立宏复制到当前宏 (而不是创建 RunMacro 操作) ,请在操作目录中右键单击它,然后单击“ 添加宏副本”。
-
将嵌入的宏 (窗体或报表对象下列出的宏) 拖动到宏窗格中会将操作从该宏复制到当前宏中。
-
-
还可以通过将数据库对象从导航窗格拖动到宏窗格来创建操作。 如果将表、查询、窗体、报表或模块拖动到宏窗格,Access 将添加一个操作,用于打开表、查询、窗体或报表。 如果将另一个宏拖动到宏窗格中,Access 将添加运行该宏的操作。
-
-
步骤 3:填写参数
大多数宏操作至少需要一个参数。 可以通过选择操作,然后将指针移到参数上方来查看每个参数的说明。 对于许多参数,可以从下拉列表中选择一个值。 如果参数要求你键入表达式,IntelliSense 通过在键入时建议可能的值来帮助你输入表达式,如下图所示:
看到要使用的值时,请将其添加到表达式,方法是双击它或使用箭头键突出显示它,然后按 TAB 或 ENTER 键。
有关创建表达式的详细信息,请参阅 表达式简介一文。
关于对 Web 数据库中的属性使用 IntelliSense
在 Web 兼容窗体上创建嵌入式 UI 宏时,IntelliSense 允许向表达式添加任何窗体属性。 但是,在 Web 数据库中,只能使用 UI 宏访问窗体属性的子集。 例如,在名为 Form1 的窗体上给定名为 Control1 的控件,IntelliSense 将允许添加 [Forms]![Form1]![Control1]。[ControlSource] 表示 UI 宏中的表达式。 但是,如果随后将数据库发布到 Access Services,则在服务器上运行时,包含该表达式的宏将生成错误。
下表显示了可在 Web 数据库中的 UI 宏中使用的属性:
对象或控件 |
可以使用的属性 |
---|---|
表单 |
Caption、Dirty、AllowAdditions、AllowDeletions、AllowEdits |
选项卡控件 |
Visible |
标签 |
标题、可见、前色、背面颜色 |
附件 |
可见、已启用 |
命令按钮 |
标题、可见、已启用、前景色 |
Tex tBox |
Enabled、 Visible、 Locked、 Fore Color、 Back Color、 value |
复选框 |
已启用、可见、锁定、值 |
图片 |
可见,背面颜色 |
组合框 |
已启用、可见、锁定、值 |
列表框 |
已启用、可见、锁定、值 |
浏览器 |
Visible |
子窗体 |
已启用,可见已锁定 |
导航控件 |
已启用、可见 |
移动操作
从宏的顶部到底部按顺序执行操作。 若要在宏中向上或向下移动操作,请使用以下方法之一:
-
将操作向上或向下拖动到所需位置。
-
选择操作,然后按 Ctrl + 向上键或 Ctrl + 向下键。
-
选择操作,然后单击宏窗格右侧的“上移”或“下移”箭头。
删除操作
删除宏操作:
-
选择操作,然后按 DELETE 键。 或者,可以单击宏窗格右侧的 “删除 (X) ”按钮。
注意:
-
如果删除操作块(如 If 块或 组 块),该块中的所有操作也会被删除。
-
右键单击宏操作时显示的快捷菜单上也提供了 “上移”、“ 下移”和“ 删除” 命令。
-
使用 If、Else If 和 Else 控制程序流
若要仅在某些条件为 true 时执行宏操作,请使用 If 块。 这将替换早期版本的 Access 中使用的 “条件” 列。 可以使用 Else If 和 Else 块扩展 If 块,这与其他顺序编程语言(如 VBA)类似。
下图显示了一个简单的 If 块,包括 Else If 和 Else 块:
如果 ExpirationDate 字段小于当前日期,则执行 If 块。
如果 ExpirationDate 字段等于当前日期, 则执行 Else If 块。
如果前面的块都没有执行 ,则执行 Else 块。
If 块在此处结束。
将 If 块添加到宏
-
从“添加新操作”下拉列表中选择“If”,或将其从“操作目录”窗格拖动到宏窗格。
-
在 If 块顶部的框中,键入确定何时执行块的表达式。 表达式必须是布尔 (,即计算结果为“是”或“否”) 。
-
将操作添加到 If 块,方法是从块中显示的“ 添加新操作” 下拉列表中选择这些操作,或者将其从“操作目录”窗格拖动到 If 块。
将 Else 或 Else If 块添加到 If 块
-
选择“ If ”块 ,然后在块的右下角,单击“ 添加 Else ”或“ 添加 Else If”。
-
如果要添加 Else If 块,请键入确定何时执行块的表达式。 表达式必须是布尔 (,即计算结果为 True 或 False) 。
-
将操作添加到 Else If 或 Else 块,方法是从块中显示的“ 添加新操作” 下拉列表中选择这些操作,或者将其从“操作目录”窗格拖到块中。
注意:
-
用于添加 If、 Else If 和 Else 块的命令在右键单击宏操作时显示的快捷菜单上可用。
-
如果 块可以嵌套多达 10 个级别深。
-
创建子 macros
每个宏可以包含多个子macros。 子 macro 设计为按名称从 RunMacro 或 OnError 宏操作调用。
将 Submacro 块添加到宏的方式与宏操作相同,如 向宏添加操作部分中所述。 添加 Submacro 块后,可以将宏操作拖动到其中,或者从块中显示的“ 添加新操作”列表中选择操作 。
注意:
-
还可以创建 Submacro 块,方法是选择一个或多个操作,右键单击这些操作,然后选择“ 创建 Submacro 块”。
-
Submacros 必须始终是宏中的最后一个块;除了子) (之外,不能添加任何操作。 如果运行的宏仅包含子macros,而不专门命名所需的子macro,则只会运行第一个子macro。
-
若要调用 submacro (例如,在事件属性中,或者通过使用 RunMacro 操作或 OnError 操作) ,请使用以下语法:
macroname.submacroname
将相关操作组合在一起
可以通过将操作分组到一起并向组分配有意义的名称来提高宏的可读性。 例如,可以将打开窗体的操作分组并筛选为名为“打开和筛选窗体”的组。 这样可以更轻松地查看哪些操作彼此相关。 组块不会影响操作的执行方式,并且无法单独调用或运行组。 它的主要用途是标记一组操作,以帮助你在阅读宏时了解宏。 此外,在编辑大型宏时,可以将每个组块向下折叠为一行,从而减少必须完成的滚动量。
如果要分组的操作已在宏中,请使用此过程将其添加到 Group 块:
-
选择要分组的操作。
-
右键单击所选操作,然后单击“ 设为组块”。
-
在 “组” 块顶部的框中,键入组的名称。
如果操作尚不存在:
-
将 “组” 块从“操作目录”拖到宏窗格中。
-
在 “组” 块顶部的框中,键入组的名称。
-
将宏操作从操作目录拖到 组 块中,或从块中显示的 “添加新操作” 列表中选择操作。
组 块可以包含其他 Group 块,并且最多可嵌套 9 个级别。
展开和折叠宏操作或块
创建新宏时,宏生成器将显示所有参数可见的宏操作。 根据宏的大小,你可能希望在编辑宏时折叠部分或全部宏操作 (和操作块) 。 这样可以更轻松地获取宏结构的整体视图。 可以根据需要展开部分或全部操作以对其进行编辑。
展开或折叠单个宏操作或块
-
单击宏或块名称左侧的加 () 或减号 (-) 符号。 或者,按向上键和向下键选择操作或块,然后按向左键或向右键以折叠或展开它。
展开或折叠所有宏操作 (但不) 块
-
在“ 设计 ”选项卡上的“ 折叠/展开 ”组中,单击“ 展开操作” 或“ 折叠操作”。
展开或折叠所有宏操作和块
-
在“ 设计 ”选项卡上的“ 折叠/展开 ”组中,单击“ 全部展开” 或“ 全部折叠”。
提示: 可以通过将指针移到操作上方来“扫视”折叠的操作。 Access 在工具提示中显示操作参数。
复制和粘贴宏操作
如果需要重复已添加到宏的操作,可以复制和粘贴现有操作,就像在字处理器中对文本段落执行的操作一样。 粘贴操作时,它们将插入当前所选操作的正下方。 如果选择了块,操作将粘贴到块内。
提示: 若要快速复制所选操作,请按住 Ctrl 键,并将操作 () 拖动到宏中要复制这些操作的位置。
与他人共享宏
将宏操作复制到剪贴板时,可以将其作为可扩展标记语言 (XML) 粘贴到接受文本的任何应用程序中。 这使你可以通过电子邮件向同事发送宏,或者在论坛、博客或其他网站上发布宏。 然后,收件人可以复制 XML 并将其粘贴到其 Access 宏生成器中。 在编写宏时重新创建宏。
运行宏
可以使用以下任一方法运行宏:
-
双击导航窗格中的宏。
-
使用 RunMacro 或 OnError 宏操作调用宏。
-
在 对象的 Event 属性中输入宏名称。 该宏将在触发该事件时运行。
调试宏
如果在获取要运行宏时遇到问题,可以使用一些工具来获取问题的根源。
向宏添加错误处理操作
建议在编写每个宏时向每个宏添加错误处理操作,并将它们永久保留在宏中。 使用此方法时,Access 会在错误发生时显示这些错误的说明。 错误说明可帮助你了解错误,以便更快地更正问题。
使用以下过程将错误处理子 macro 添加到宏:
-
在“设计”视图中打开宏。
-
在宏底部,从“添加新操作”下拉列表中选择“Submacro”。
-
在“ Submacro”一词右侧的框中,键入子 macro 的名称,例如 ErrorHandler。
-
从 Submacro 块中显示的“添加新操作”下拉列表中,选择 MessageBox 宏操作。
-
在 “消息 ”框中,键入以下文本: =[MacroError].[说明]
-
在宏底部,从“添加新操作”下拉列表中选择“OnError”。
-
将 “转到” 参数设置为 “宏名称”。
-
在“ 宏名称 ”框中,键入错误处理子 macro (在此示例中, ErrorHandler) 的名称。
-
将 OnError 宏操作拖到宏的最顶部。
下图显示了具有 OnError 操作的宏和名为 ErrorHandler 的 Submacro。
OnError 宏操作位于宏的顶部,并在出错时调用 ErrorHandler 子macro。
ErrorHandler 子macro 仅在由 OnError 操作调用时才运行,并显示描述错误的消息框。
使用单步命令
单步执行是一种宏调试模式,可用于一次执行一个操作。 执行每个操作后,将显示一个对话框,其中显示有关操作的信息以及因此发生的任何错误代码。 但是,由于“宏单步”对话框中没有错误说明,因此建议使用上一部分所述的错误处理子macro 方法。
若要启动单步模式,请执行以下操作:
-
在“设计”视图中打开宏。
-
在“ 设计 ”选项卡上的“ 工具” 组中,单击“ 单一步骤”。
-
保存并关闭宏。
下次运行宏时,将显示“ 宏单步 ”对话框。 该对话框显示有关每个操作的以下信息:
-
宏名称
-
If 块) 的条件 (
-
操作名称
-
参数
-
错误编号 (0 表示) 未发生错误
单步执行操作时,单击对话框中的三个按钮之一:
-
若要查看有关宏中下一个操作的信息,请按 Step。
-
若要停止当前正在运行的任何宏,请单击“ 停止所有宏”。 下次运行宏时,单步执行模式仍将有效。
-
若要退出单步模式并继续运行宏,请单击“ 继续”。
注意:
-
如果在宏中的最后一个操作后按 Step ,则下次运行宏时,单步执行模式仍将有效。
-
若要在宏运行时进入单步模式,请按 Ctrl+BREAK。
-
若要在宏中的特定点进入单步模式,请在该点添加 SingleStep 宏操作。
-
单步模式在 Web 数据库中不可用。
-
将宏转换为 VBA 代码
宏提供 Visual Basic for Applications (VBA) 编程语言中可用的命令子集。 如果确定需要的功能比宏所能提供的功能更多,可以轻松地将独立宏对象转换为 VBA 代码,然后利用 VBA 提供的扩展功能集。 但请记住,VBA 代码不会在浏览器中运行;仅当数据库在 Access 中打开时,才会运行添加到 Web 数据库的任何 VBA 代码。
注意: 无法将嵌入宏转换为 VBA 代码。
将宏转换为 VBA 代码:
-
在导航窗格中,右键单击宏对象,然后单击“设计视图”。
-
在“ 设计 ”选项卡上的“ 工具” 组中,单击“ 将宏转换为 Visual Basic”。
-
在“ 转换宏 ”对话框中,指定是否要将错误处理代码和注释添加到 VBA 模块,然后单击“ 转换”。
Access 确认宏已转换,并打开 Visual Basic 编辑器。 双击“项目”窗格中的“转换后的宏”以查看和编辑模块。