创建用户界面 (UI) 宏

在 Microsoft Access 中,附加到用户界面的宏 (UI) 诸如命令按钮、文本框、窗体和报表等对象称为 UI 宏。 这会将它们与附加到表的数据宏区进行区分。 可以使用 (UI) 宏自动执行一系列操作,例如打开另一个对象、应用筛选器、启动导出操作,以及执行许多其他任务。 本文介绍新重新设计的宏生成器,并介绍创建 UI 宏所涉及的基本任务。

注意: 本文不适用于 Access Web 应用。

本文内容

概述

宏可以包含在宏对象中 (有时称为) 宏,也可以嵌入到窗体、报表或控件的事件属性中。 嵌入的宏将成为嵌入宏的对象或控件的一部分。 宏对象在导航窗格中的"宏 "下可见;嵌入的宏不是。

每个宏由一个或多个宏操作决定。 根据你使用的上下文,某些宏操作可能不可用。

返回页首

宏生成器

下面是宏生成器的一些主要功能亮点。

  • 操作目录    宏操作按类型和可搜索进行组织。

  • IntelliSense    键入表达式时,IntelliSense建议可能的值,并让你选择正确的值。

  • 键盘快捷方式    使用组合键可更快、更轻松地编写宏。

  • 程序流    使用注释行和操作组创建更具可读性的宏。

  • 条件语句    允许更复杂的逻辑执行,并支持嵌套 If/Else/Else If。

  • 宏重用    操作目录显示已创建的其他宏,让你将其复制到正在处理宏中。

  • 更轻松地共享    复制宏,然后将其作为 XML 粘贴到电子邮件、新闻组文章、博客或代码示例网站中。

以下视频介绍宏生成器的主要区域。

你的浏览器不支持视频。

返回页首

创建独立宏

此过程将创建一个独立的宏对象,该对象将显示在导航窗格中 的"宏 "下。 想要在应用程序的多个位置重复使用宏时,独立宏非常有用。 通过从其他宏调用宏,可以避免在多个位置复制相同的代码。

  1. 在“创建”选项卡上的“宏和代码”组中,单击“”。

    Access 将打开宏生成器。

  2. 在快速访问工具栏上,单击"保存"。

  3. 在" 另存 为"对话框中,键入宏的名称,然后单击"确定"。

  4. 继续执行"向 宏添加操作"部分

返回页首

创建嵌入的宏

此过程创建嵌入在对象的事件属性中的宏。 此类宏不会显示在导航窗格中,但可以从"加载时"或"单击时"等事件调用

由于宏成为窗体或报表对象的一部分,因此建议使用嵌入的宏来自动执行特定于特定窗体或报表的任务。

  1. 在导航窗格中,右键单击将包含宏的窗体或报表,然后单击"布局视图"。

  2. 如果尚未显示属性表,请按 F4 显示该表。

  3. 单击包含要嵌入宏的事件属性的控件或节。 还可使用页面顶部的"选择类型"下的下拉列表 (或整个窗体或报表) 控件或分区属性表。

  4. 在"属性表"任务窗格中,单击 "事件" 选项卡。

  5. 在要触发宏的事件的属性框中单击。 例如,对于命令按钮,如果希望在单击该按钮时运行宏,请在"单击"属性框中单击。

  6. 如果属性框包含 [Embedded Macro]一词,则意味着已为此事件创建宏。 可以继续此过程的剩余步骤来编辑宏。

  7. 如果属性框包含 [事件过程]一词,则意味着Visual Basic for Applications (事件) VBA 事件过程。 在事件内嵌入宏之前,需要删除过程。 为此,可以删除 [事件过程]一词,但应首先检查事件过程,确保删除事件过程不会中断数据库中所需的功能。 在某些情况下,可以使用嵌入的宏重新创建 VBA 过程的功能。

  8. 单击" 生成" 按钮 按钮图像

  9. 如果显示"选择生成器"对话框,请确保选中"宏生成器",然后单击"确定"。

    Access 将打开宏生成器。 继续下一部分,向宏添加操作。

返回页首

向宏添加操作

操作是包含宏的单个命令,每个命令都根据其功能命名,例如FindRecordCloseDatabase。

步骤 1:浏览或搜索宏操作

添加操作的第一步是在"添加新操作"下拉列表或操作目录中找到它。

注意: 

  • 默认情况下," 添加新操作 "下拉列表和操作目录仅显示将在非受信任的数据库中执行的操作。 查看所有操作:

    • 在"设计"选项卡上的"显示/隐藏"组中,单击"显示所有操作"。

  • 如果未显示操作目录,请在"设计"选项卡上的"显示/隐藏"组中单击"操作目录"。

若要查找操作,请使用以下方法之一:

  • 单击"添加新操作"下拉列表中的箭头,然后向下滚动以查找操作。 首先列出程序流元素,然后按字母顺序列出宏操作。

  • 在"操作目录"窗格中浏览操作。 操作按类别分组。 展开每个类别以查看操作。 如果选择某个操作,操作目录底部会显示该操作的简短说明。

  • 通过键入窗格顶部的"搜索"框,在"操作目录"窗格中搜索操作。 键入时,将筛选操作列表以显示包含该文本的所有宏。 Access 将同时搜索宏名称及其说明,查找输入的文本。

步骤 2:向宏添加操作

找到想要的宏操作后,使用以下方法之一将其添加到宏:

  • 在"添加新操作 "列表中选择一个操作 ,或开始在框中键入操作名称。 Access 在显示"添加新操作"列表 时添加 操作。

  • 将操作从操作目录拖动到宏窗格。 将显示一个插入栏,用于显示释放鼠标按钮时将插入操作的位置。

  • 双击操作目录中的操作。

    • 如果在宏窗格中选择了操作,Access 会将新操作添加到所选操作正下方。

    • 如果在宏窗格中选择了组、If、Else If、ElseSubmacro块,Access 会将新操作添加到该块。

    • 如果未在宏窗格中选择任何操作或块,Access 会将新操作添加到宏的末尾。

      注意: 

      • 如果已创建一个或多个宏,它们列在操作目录中的" 在此 数据库"节点下。

        • 将独立宏 (宏) 宏窗格下列出的宏将创建运行所拖动宏的RunMacro操作。 然后,可以使用下拉列表调用子macros(如果存在)。

        • 如果只想将操作从独立宏复制到当前宏 (而不是创建RunMacro操作) ,请在操作目录中右键单击该宏,然后单击"添加宏副本"。

        • 将嵌入的宏 (窗体或报表对象下列出的宏) 宏窗格将操作从该宏复制到当前宏。

      • 也可通过将数据库对象从导航窗格拖动到宏窗格来创建操作。 如果将表、查询、窗体、报表或模块拖动到宏窗格,Access 会添加一个操作,用于打开表、查询、窗体或报表。 如果将另一个宏拖动到宏窗格中,Access 将添加一个运行该宏的操作。

步骤 3:填写参数

大多数宏操作至少需要一个参数。 可以通过选择操作,然后将指针移到参数上来查看每个参数的说明。 对于许多参数,可以从下拉列表中选择一个值。 如果参数要求你键入表达式,IntelliSense键入时建议可能的值,以帮助你输入表达式,如下图所示:

使用 IntelliSense 输入表达式

当看到想要使用的值时,请双击它或使用箭头键突出显示它,然后按 Tab 或 Enter 键将其添加到表达式。

有关创建表达式的信息,请参阅表达式 简介一文

关于将 IntelliSense与 Web 数据库中的属性一起使用

在 Web 兼容的窗体上创建嵌入式 UI 宏时,IntelliSense向表达式添加任何窗体属性。 但是,在 Web 数据库中,只能使用 UI 宏访问窗体属性的子集。 例如,给定名为 Form1 的窗体上名为 Control1 的控件,IntelliSense添加 [Forms]![Form1]![Control1]。[ControlSource] 到 UI 宏中的表达式。 但是,如果随后将数据库发布到 Access Services,则包含该表达式的宏在服务器上运行时将生成错误。

下表显示了可在 Web 数据库中的 UI 宏中使用的属性:

可以使用的属性

表单

Caption、Dirty、AllowAdditions、AllowDeletions、AllowEdits

选项卡控件

Visible

标签

题注、可见、Fore Color、Back Color

附件

可见,已启用

命令按钮

Caption、Visible、Enabled、Fore Color

Tex tBox

Enabled、Visible、Locked、Fore Color、Back Color、value

复选框

已启用、可见、已锁定、值

图像

可见,背景色

组合框

已启用、可见、已锁定、值

列表框

已启用、可见、已锁定、值

Web 浏览器

Visible

子窗体

已启用,可见已锁定

导航控件

已启用、可见

移动操作

操作按从宏的顶部到底部的顺序执行。 若要在宏中上下移动操作,请使用以下方法之一:

  • 将操作向上或向下拖动到需要它的地方。

  • 选择该操作,然后按 Ctrl + 向上键或 Ctrl + 向下键。

  • 选择该操作,然后单击宏窗格右侧"上移"或"下移"箭头。

删除操作

若要删除宏操作,请执行:

  • 选择操作,然后按 DELETE 键。 或者,可以单击宏 () 的 "删除 X 行"按钮。

    注意: 

    • 如果删除一个操作块(例如 If 块或 块),则块中的所有操作也都将被删除。

    • 键单击操作时出现的快捷菜单上也提供了"上移、下移"和"删除"命令。

返回页首

使用 If、Else If 和 Else 控制程序流

若要仅在特定条件为 true 时执行宏操作,请使用 If 块。 这会替换 早期版本的 Access 中使用的"条件"列。 可以使用 Else IfElse块扩展 If 块,类似于 VBA 等其他顺序编程语言。

下图显示了一个简单的 If 块,包括 Else IfElse 块:

一个包含 If/Else If/Else 语句的宏。

如果 ExpirationDate 字段小于当前日期,则执行 If 块。

如果 ExpirationDate 字段等于当前日期,则 执行 Else If 块。

如果未 执行 上述任何块,将执行 Else 块。

If 块在此处结束。

向宏添加 If 块

  1. "添加新操作"下拉列表中选择 If,或将其从"操作目录"窗格拖动到宏窗格。

  2. 在 If 块顶部的框中,键入确定何时执行块的表达式。 表达式必须是布尔值 (,即计算结果为"是"或"否") 。

  3. 通过从块内出现的"添加新操作"下拉列表中选择操作,或者将它们从"操作目录"窗格拖动到 If 块,将操作添加到If块。

将 Else 或 Else If 块添加到 If 块

  1. 选择 If块,然后在块的右下角单击"添加其他"或" 添加其他 If"。

  2. 如果要添加 Else If 块,请键入确定何时执行该块的表达式。 表达式必须是布尔值 (,即计算结果为 True 或 False) 。

  3. 通过在块内出现的"添加新操作"下拉列表中选择操作,或者将它们从"操作目录"窗格拖动到该块,将操作添加到Else IfElse块。

    注意: 

    • 用于添加 If、ElseIfElse 块的命令在右键单击宏操作时出现的快捷菜单上可用。

    • 如果 块的嵌套深度最高为 10 级。

返回页首

创建子macros

每个宏可以包含多个子宏。 子宏按名称从 RunMacroOnError 宏操作进行调用。

Submacro 块添加到宏的方式与宏操作相同,如"向宏添加操作"部分 中所述。 添加子宏块后,可以将宏操作拖动到该块中,或者从该块内出现的"添加新操作"列表中选择操作。

注意: 

  • 还可以创建子macro块,方法是选择一个或多个操作,右键单击这些操作,然后选择"生成子macro 块"。

  • 子宏必须始终是宏中的最后一个块;不能向子 (添加任何操作,) 子macro 下面的子macros。 如果运行只包含子宏的宏,但不专门命名想要的子宏,则只会运行第一个子宏。

  • 若要调用子宏 (例如,在事件属性中,或使用RunMacro操作或OnError操作) ,请使用以下语法

    :macroname.submacroname

返回页首

将相关操作组合在一起

可以通过将操作组合在一起,并将有意义的名称分配给组来提高宏的可读性。 例如,你可以将打开和筛选窗体的操作分组到名为"打开和筛选窗体"的组中。 这样,可以更轻松地查看彼此相关的操作。 组 不会影响操作的执行方式,并且无法单独调用或运行组。 它的主要用途是标记一组操作,以帮助你在阅读宏时了解宏。 此外,编辑大型宏时,可以将每个组块向下折叠为一行,从而减少滚动量。

如果要分组的操作已在宏中,请使用此过程将它们添加到 块:

  1. 选择要分组的操作。

  2. 右键单击所选操作,然后单击"设置组块"。

  3. 在组块顶部的框中,键入组的名称。

如果操作不存在:

  1. 将" 组" 块从"操作目录"拖动到宏窗格。

  2. 在组块顶部的框中,键入组的名称。

  3. 将宏操作从操作目录拖动到块中,或者从块内出现的"添加新操作"列表中选择操作。

块可以包含其他 块,最多可嵌套 9 层。

返回页首

展开和折叠宏操作或块

创建新宏时,宏生成器会显示具有所有可见参数的宏操作。 根据宏的大小,您可能希望在编辑宏时折叠某些或所有宏 (和) 块操作。 这样,可以更轻松地获取宏结构的整体视图。 可根据需要展开部分或所有操作进行编辑。

展开或折叠单个宏操作或块

  • 单击加号 (+) 或减号 (-) 宏或块名称的左侧添加符号。 或者,按向上键和向下键选择操作或块,然后按向左键或向右键折叠或展开它。

展开或折叠所有宏 (但不阻止)

  • 在"设计"选项卡上的"折叠/展开"组中,单击"展开操作"或"折叠操作"。

展开或折叠所有宏操作和块

  • 在"设计"选项卡上的"折叠/展开"组中,单击"全部展开"或"全部折叠"。

提示:  可以通过将指针移到操作上,在折叠的操作内"扫视"。 Access 在工具提示中显示操作参数。

返回页首

复制和粘贴宏操作

如果需要重复已添加到宏的操作,可以复制和粘贴现有操作,就像在文字处理器中处理文本段落一样。 粘贴操作时,这些操作将插入当前所选操作正下方。 如果选择了一个块,操作将粘贴到块内。

提示:  若要快速复制所选操作,请按住 Ctrl 键并将 () 拖动到宏中要复制它们的位置。

与他人共享宏

将宏操作复制到剪贴板时,它们可粘贴为可扩展标记语言 (XML) 任何接受文本的应用程序。 这样,你可通过电子邮件向同事发送宏,或在论坛、博客或其他网站上发布宏。 然后,收件人可以复制 XML 并将其粘贴到其 Access 2010 宏生成器中。 将重新创建宏,就像您撰写宏一样。

运行宏

可以使用以下任一方法运行宏:

  • 双击导航窗格中的宏。

  • 使用 RunMacroOnError 宏操作调用宏。

  • 在对象的 Event 属性中输入宏名称。 触发该事件时,宏将运行。

返回页首

调试宏

如果在运行宏时遇到问题,可以使用一些工具来了解问题的根源。

向宏添加错误处理操作

我们建议在编写宏时向每个宏添加错误处理操作,并永久将其保留宏中。 使用此方法时,Access 会在发生错误时显示错误说明。 错误说明可帮助你了解错误,以便可以更快速地更正问题。

使用以下过程将错误处理子宏添加到宏:

  1. 在设计视图中打开宏。

  2. 在宏底部,从"添加新操作"下拉列表中选择"子宏"。

  3. "Submacro"一词右侧框中,键入子macro 的名称,例如ErrorHandler。

  4. 从子块内出现的"添加新操作"下拉列表中,选择MessageBox宏操作。

  5. 在消息 框中 ,键入以下文本 :=[MacroError].[说明]

  6. 在宏的底部,从"添加新操作"下拉列表中选择OnError。

  7. Go to参数设置为"宏名称"。

  8. "宏名称" 框中,键入错误处理子宏的名称, (ErrorHandler) 。

  9. OnError 宏操作拖动到宏的顶部。

下图显示了包含 OnError 操作和名为 ErrorHandler的 Submacro 的宏。

一个包含错误处理子宏的宏。

OnError宏操作位于宏的顶部,在发生错误时调用ErrorHandler子宏。

ErrorHandler子macro 仅在由 OnError操作调用时运行,并显示描述错误的消息框。

使用单步命令

单步是一种宏调试模式,可用于一次执行一个宏操作。 执行每个操作后,将显示一个对话框,其中显示有关该操作的信息,以及结果中发生的任何错误代码。 但是,由于"宏单步"对话框中没有错误说明,因此建议使用上一部分中所述的错误处理子宏方法。

若要启动单步模式,请执行:

  1. 在设计视图中打开宏。

  2. 在"设计"选项卡上的"工具"组中,单击"单步"。

  3. 保存并关闭宏。

下次运行宏时,将显示 "宏单步 执行"对话框。 该对话框显示有关每个操作的以下信息:

  • 宏名称

  • If 块 (的条件)

  • 操作名称

  • 参数

  • 错误 (0 表示未发生错误)

逐步执行操作时,请单击对话框中的三个按钮之一:

  • 若要查看有关宏中下一个操作的信息,请按Step。

  • 若要停止当前正在运行的任何宏,请单击"停止所有宏"。 下一次运行宏时,单步模式仍将有效。

  • 若要退出单步模式并继续运行宏,请单击"继续"。

    注意: 

    • 如果在宏中的最后一个操作后按 Step, 则下一次运行宏时,单步模式仍将有效。

    • 若要在宏运行时进入单步模式,请按 Ctrl+BREAK。

    • 若要在宏中的特定点进入单步模式,请在该点添加 SingleStep 宏操作。

    • 单步模式在 Web 数据库中不可用。

返回页首

将宏转换为 VBA 代码

宏提供一部分命令,这些命令在 Visual Basic for Applications (VBA) 编程语言中可用。 如果决定需要的功能比宏能够提供的功能更多,可以轻松将独立的宏对象转换为 VBA 代码,然后利用 VBA 提供的扩展功能集。 但请记住,VBA 代码不会在浏览器中运行;添加到 Web 数据库的任何 VBA 代码仅在 Access 中打开数据库时运行。

注意:  无法将嵌入的宏转换为 VBA 代码。

将宏转换为 VBA 代码:

  1. 在导航窗格中,右键单击宏对象,然后单击"设计"视图。

  2. 在"设计"选项卡上的"工具"组中,单击"将宏转换为Visual Basic。

  3. 在"转换宏"对话框中,指定是否要将错误处理代码和注释添加到 VBA 模块,并单击"转换"。

Access 确认宏已转换,并打开Visual Basic编辑器。 双击"项目"窗格中的"转换后的宏"以查看和编辑模块。

返回页首

需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×