使用宏创建自定义菜单和快捷菜单

注意: 我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。 我们的目的是使此内容能对你有所帮助。 可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的英文版本以便参考。

你可以使用 Access 宏创建右键单击窗体、报表或单个控件时显示的自定义快捷菜单。 您还可以为特定窗体或报表创建在功能区上显示的自定义菜单。

若要使用宏创建菜单, 请执行以下三个主要步骤:

  1. 使用包含菜单命令的 submacros 创建宏对象。

  2. 创建另一个创建菜单本身的宏对象。

  3. 将菜单附加到控件、窗体、报表或整个数据库。

以下部分详细介绍这些步骤。

注意: 您是否正在使用 Access 2007? 如果是, 请向下跳到Access 2007 中的 "创建自定义快捷方式菜单" 部分。

提示: 如果想要了解如何使用 Visual Basic for Applications (VBA) 代码在 Access 中创建自定义快捷菜单, 请参阅创建窗体、窗体控件或报表的快捷菜单一文。

步骤 1: 使用包含菜单命令的 submacros 创建宏对象

在此步骤中, 使用 submacros 创建一个宏对象, 每个 submacro 都将是快捷菜单上的一个单独的命令。

什么是 submacro?

可以在宏对象中使用 submacro 来定义一组宏操作。 宏对象内的 Submacros 可以独立于各种控件和对象事件进行调用。 宏对象中的单个 submacros 具有唯一名称, 并且可以包含一个或多个宏操作。

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

  2. 对于您想要在自定义快捷菜单上的每个命令, 请执行以下操作:

    1. Submacro 宏语句添加到宏设计窗口, 并将 Submacro 的名称命名为要在快捷菜单上显示的内容 (例如, "打印" 或 "刷新")。

      提示: 若要创建访问键, 以便可以使用键盘选择命令, 请在要用作命令名称中的访问键的字母前键入一个与号 (&) (例如, "&Refresh")。 该字母将在菜单上带下划线。

    2. 在 submacro 中, 选择要在单击快捷菜单上的命令时执行的第一个操作。

    3. 如果在选择此命令时需要执行更多操作, 请在同一 submacro 内将它们添加为单独的宏操作。

  3. 保存并命名宏对象 (例如, mcrShortcutMenuCommands

    下图显示了一个示例宏对象, 其中包含自定义菜单或快捷菜单的三个 submacros。

    带有三个 submacro 语句的 Access 宏设计窗口的屏幕截图。

步骤 2: 创建用于创建菜单的第二个宏对象

此步骤可能看起来是多余的, 但要从在步骤1中创建的宏对象创建快捷菜单, 必须创建包含AddMenu 宏操作的第二个宏对象。 此宏操作有时称为 "菜单宏"。

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

  2. 在 "宏设计" 窗口上的 "添加新操作" 组合框中, 选择 " AddMenu"。

  3. AddMenu宏操作的 "菜单名称" 参数框中, 键入菜单的名称 (例如, "表单命令")。 此参数不是必需的, 但如果在步骤3中计划将菜单添加到功能区选项卡 (如窗体或报表的 "加载项" 选项卡), 则建议使用此参数。 如果在步骤3中将菜单添加为快捷菜单, 则忽略 "菜单名称" 参数。

  4. 在 "菜单宏名称" 参数框中, 输入您在步骤1中创建的宏对象的名称。

  5. 保存并命名第二个宏对象, 例如mcrAddShortcutMenu

    下图显示了一个用于创建我们在步骤1中设计的菜单的示例菜单宏对象。

    带有 AddMenu 宏操作的 Access 宏对象的屏幕截图。

步骤 3: 将菜单附加到控件、窗体、报表或数据库

根据希望菜单出现的位置, 请使用以下一个或多个过程。

将菜单添加到窗体或报表的 "加载项" 选项卡

如果希望菜单显示在特定窗体或报表的 "加载项" 选项卡上, 请使用此过程。

  1. 在导航窗格中, 右键单击要在其中显示菜单的窗体或报表, 然后单击 "设计视图"。

  2. 在“设计”选项卡上的“工具”组中,单击“属性表​​”。

  3. 通过从 "属性表" 任务窗格顶部的列表中选择 "窗体" 或 "报表", 选择整个对象。

  4. 在属性表上的 "其他" 选项卡上的 "菜单栏" 属性框中, 键入您在步骤2中创建的宏对象的名称 (在本例中为 "mcrAddShortcutMenu")。

  5. 保存窗体或报表更改。

    下次打开窗体或报表时, 功能区中将显示 "外接程序" 选项卡。 单击选项卡以查看菜单, 如下图所示:

    Access 中的外接程序功能区的屏幕截图

    有关功能区自定义技术 (如添加自定义选项卡或隐藏默认选项卡) 的详细信息, 请参阅在 Access 中创建自定义功能区一文。

将菜单添加为窗体、报表或控件的快捷菜单

如果希望在右键单击特定窗体、报表或控件时显示菜单, 请使用此过程。

  1. 在导航窗格中, 右键单击要在其中显示快捷菜单的窗体或报表, 然后单击 "设计视图"。

  2. 在“设计”选项卡上的“工具”组中,单击“属性表​​”。

  3. 选择要向其附加快捷菜单的控件或对象。

    若要选择整个对象, 请从 "属性表" 任务窗格顶部的列表中选择 "窗体" 或 "报表"。

  4. 在属性表上的 "其他" 选项卡上的 "快捷菜单栏" 属性框中, 键入您在步骤2中创建的宏对象的名称 (在本例中为 "mcrAddShortcutMenu")。

  5. 请确保快捷菜单属性设置为"是"。

  6. 保存窗体或报表更改。

    下次打开窗体或报表, 然后右键单击窗体、报表或控件时, 将看到带有关联命令的快捷菜单, 如下图所示:

    Access 窗体上的快捷菜单的屏幕截图

将菜单添加为全局快捷菜单

此过程将替换当前数据库中的所有默认快捷菜单。 附加到特定窗体、报表或控件的自定义快捷菜单不受影响。

  1. 单击“文件”>“选项”。

  2. 在“Access 选项”对话框中,单击“当前数据库”。

  3. 在 "功能区和工具栏选项" 下的 "快捷菜单栏" 框中, 键入您在步骤2中创建的宏的名称 (在本例中为 "mcrAddShortcutMenu")。

  4. 单击"确定"以在 " Access 选项" 对话框中保存所做的更改。

  5. 关闭并重新打开数据库以使更改生效。

自定义快捷菜单将替换它们所附加到的对象的默认快捷菜单。 如果要保留某些 Access 命令以在这些菜单上使用, 请使用RunCommand宏操作将命令放入所需菜单的宏对象中。

附加到控件的自定义快捷菜单取代了数据库中定义的任何其他自定义快捷菜单。 附加到窗体或报表的自定义快捷菜单取代了自定义全局快捷菜单。

为窗体或报表指定菜单宏或为数据库指定菜单宏时, Access 将在打开窗体、报表或数据库时运行此菜单宏。 如果在窗体、报表或数据库打开时对菜单宏对象或定义其命令的宏对象进行了更改, 则必须关闭窗体、报表或数据库, 然后重新打开它才能看到所做的更改。

若要在命令的快捷菜单列表上创建子菜单, 请按照步骤1创建一个单独的宏对象, 该对象仅包含子菜单命令, 如下图所示:

Access 中具有两个 submacros 的宏的屏幕截图

然后, 再次执行步骤1以定义较高级别菜单对象的命令。 使用AddMenu宏操作将子菜单添加为更高级别的宏对象中的项目。 下图显示了包含子菜单的菜单的宏对象。 此示例宏对象中的第三个 submacro 创建 "导出到 ... " 子菜单 (mcrShortcutSubMenuCommands)。

具有四个 submacros 的 Access 宏的屏幕截图

下图显示了带有子菜单的结果完成快捷菜单:

带有子菜单的快捷菜单的屏幕截图

通过在每个级别的菜单的宏对象中使用AddMenu宏操作, 可以创建多个级别的子菜单。 请确保为每个AddMenu操作的 "菜单名" 参数提供一个值, 否则子菜单将在较高级别的菜单中显示为空行。

使用If/Then/Else块的宏表达式条件仅在顶级菜单宏对象中受支持。 换句话说, 你可以在菜单宏对象中使用条件表达式来确定是否显示特定菜单或快捷菜单, 但仅适用于顶级菜单。 不能使用条件表达式来显示或隐藏菜单上的命令或子菜单。 您还可以使用条件表达式隐藏或显示自定义快捷菜单或全局快捷菜单。

或者, 您在步骤2中创建的菜单宏可以是宏对象的一部分。 例如, 如果有多个快捷菜单用于不同的对象或控件, 则可以创建一个宏对象, 其中包含所有必需的菜单宏。 请确保每个 submacro 的名称都是唯一的。 在步骤3中, 使用以下表示法引用宏: SubmacroName。 MacroObjectName 例如, mcrAddShortcutMenus. AddMenu2

返回页首

在 Access 2007 中创建自定义快捷菜单

与更高版本相比, "宏设计" 窗口在 Access 2007 中有所不同, 因此, 如果您使用的是 Access 2007, 请展开以下各部分进行跟踪。

在此步骤中, 你将创建一个宏组, 每个宏都将是快捷菜单上的一个单独的命令。

什么是宏组?

宏组是包含两个或多个独立宏的单个宏对象。 通过在 "宏名称" 列中键入每个宏的名称来标识各个宏。 在下图中, Macro3是一个宏组。 NotFoundMsgFoundMsg是组内的单个宏, 每个宏都包含两个宏操作。

宏组示例

注意: 默认情况下, "宏名" 列处于隐藏状态。 若要显示 "宏名" 列, 请在 "设计" 选项卡上的 "显示/隐藏" 组中, 单击 "宏名"。

  1. 在“创建”选项卡的“其他”组中,单击“”。 如果此命令不可用,请单击“模块”或“类模块”按钮下方的箭头,然后单击“”。

  2. 在 "设计" 选项卡上的 "显示/隐藏" 组中, 单击 "宏名" 以显示 "宏名" 列。

  3. 对于您想要在自定义快捷菜单上的每个命令, 请执行以下操作:

    • 在 "宏名" 列中, 输入要在快捷菜单上显示的文本 (例如, "打印报表" 或 "保存")。

      1. 注意: 若要创建访问键, 以便可以使用键盘选择命令, 请在要用作命令名称中的访问键的字母前键入一个与号 (&) (例如, "&Save")。 该字母将在菜单上带下划线。

    • 在 "操作" 列中, 选择要在单击快捷菜单上的命令时执行的第一个操作。

    • 如果在选择此命令时需要执行更多操作, 请在后续行上添加它们。 对于每个后续操作, 将 "宏名" 单元格保留为空。

      1. 注意: 若要在两个菜单命令之间创建线条, 请在相应的菜单命令之间的 "宏名" 列中键入连字符 (-)。

  4. 保存并命名宏, 例如, mcrShortcutMenuCommands

下图显示了自定义菜单或快捷菜单的 "宏" 组示例。

“设计”视图中的菜单宏组

此步骤可能看起来是多余的, 但要从在步骤1中创建的宏组创建快捷菜单, 必须创建包含AddMenu宏操作的第二个宏。 此宏有时称为 "菜单宏"。

  1. 在“创建”选项卡的“其他”组中,单击“”。 如果此命令不可用,请单击“模块”或“类模块”按钮下方的箭头,然后单击“”。

  2. 在宏的第一行, 在操作列表中选择AddMenu

  3. 在 "操作参数" 下的 "菜单名称" 框中, 键入菜单的名称 (例如, "报表命令")。 此参数不是必需的, 但如果在步骤3中计划将菜单添加到功能区选项卡 (如窗体或报表的 "加载项" 选项卡), 则建议使用此参数。 如果在步骤3中将菜单添加为快捷菜单, 则忽略 "菜单名称" 参数。

  4. 在 "菜单宏名" 框中, 输入您在步骤1中创建的宏的名称。

  5. 保存并命名宏, 例如, mcrAddShortcutMenu

下图显示了一个用于创建我们在步骤1中设计的菜单的示例菜单宏。

“设计”视图中的菜单宏

根据希望菜单出现的位置, 请使用以下一个或多个过程。

  • 将菜单添加到窗体或报表的 "加载项" 选项卡

    如果希望菜单显示在特定窗体或报表的 "加载项" 选项卡上, 请使用此过程, 如下图所示:

    包含自定义菜单的“加载项”选项卡

    1. 在导航窗格中, 右键单击要在其中显示菜单的窗体或报表, 然后单击 "设计视图"。

    2. 在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。

    3. 通过从 "属性表" 任务窗格顶部的列表中选择 "窗体" 或 "报表", 选择整个对象。

    4. 在属性表上的 "其他" 选项卡上, 在 "快捷菜单属性" 框中, 键入您在步骤2中创建的宏的名称 (在本例中为 "mcrAddShortcutMenu")。

      下次打开窗体或报表时, 功能区中将显示 "外接程序" 选项卡。 单击选项卡以查看菜单。

      有关功能区自定义技术 (如添加自定义选项卡或隐藏默认选项卡) 的详细信息, 请参阅在 Access 中创建自定义功能区一文。

      功能区是 Microsoft Office Fluent 用户界面的一个组件。

  • 将菜单添加为窗体、报表或控件的快捷菜单

    如果希望在右键单击特定窗体、报表或控件时显示菜单, 请使用此过程, 如下图所示:

    简单的快捷菜单

    1. 在导航窗格中, 右键单击要在其中显示快捷菜单的窗体或报表, 然后单击 "设计视图"。

    2. 在“设计”选项卡上的“显示/隐藏”组中,单击“属性表”。

    3. 选择要向其附加快捷菜单的控件或对象。

      注意: 若要选择整个对象, 请从 "属性表" 任务窗格顶部的列表中选择 "窗体" 或 "报表"。

    4. 在属性表上的 "其他" 选项卡上的 "快捷菜单栏" 属性框中, 键入您在步骤2中创建的宏的名称 (在本例中为 "mcrAddShortcutMenu")。

  • 将菜单添加为全局快捷菜单

    此过程将替换当前数据库中的所有默认快捷菜单。 附加到特定窗体、报表或控件的自定义快捷菜单不受影响。

    1. 单击 " Microsoft Office 按钮", 然后单击 " Access 选项"。

    2. 在“Access 选项”对话框中,单击“当前数据库”。

    3. 在 "功能区和工具栏选项" 下的 "快捷菜单栏" 框中, 键入您在步骤2中创建的宏的名称 (在本例中为 "mcrAddShortcutMenu")。

  • 自定义快捷菜单将替换它们所附加到的对象的默认快捷菜单。 如果要保留某些 Access 命令以在这些菜单上使用, 请使用RunCommand操作将命令放入所需菜单的宏组中。

  • 附加到控件的自定义快捷菜单取代了数据库中定义的任何其他自定义快捷菜单。 附加到窗体或报表的自定义快捷菜单取代了自定义全局快捷菜单。

  • 为窗体或报表指定菜单宏或为数据库指定菜单宏时, Access 将在打开窗体、报表或数据库时运行此菜单宏。 如果在窗体、报表或数据库打开的情况下, 对菜单宏或定义其命令的宏组进行了更改, 则必须关闭窗体、报表或数据库, 然后重新打开它才能看到所做的更改。

  • 若要创建子菜单, 请按照步骤1创建只包含子菜单命令的单独的宏组。 然后, 再次执行步骤1以定义较高级别菜单的命令。 使用AddMenu宏操作将子菜单添加为更高级别的宏组中的项目。 下图显示了包含子菜单的菜单的 "宏" 组, 然后显示生成的快捷菜单。 宏组中的第三行创建 "导出到..." 子菜单 (mcrSubMenu)。

    包含子菜单的快捷菜单

    通过在每个级别的菜单的宏组中使用AddMenu操作, 可以创建多个级别的子菜单。 请确保为每个AddMenu操作的 "菜单名" 参数提供一个值, 否则子菜单将在较高级别的菜单中显示为空行。

  • 宏条件仅在顶级菜单宏中受支持。 换句话说, 你可以在菜单宏中使用条件来确定是否显示特定菜单或快捷菜单, 但仅适用于顶级菜单。 不能使用条件来显示或隐藏菜单上的命令或子菜单。 你还可以使用条件来隐藏或显示自定义快捷菜单或全局快捷菜单。

  • 或者, 您在步骤2中创建的菜单宏可以是宏组的一部分。 例如, 如果有多个快捷菜单用于不同的对象或控件, 则可以创建一个宏对象, 其中包含所有必需的菜单宏。 请确保显示 "宏名" 列, 并为每个宏键入唯一的名称。 在步骤3中, 使用以下表示法引用宏: macroname。 macrogroupname 例如, mcrAddShortcutMenus. AddMenu2

返回页首

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

此信息是否有帮助?

谢谢您的反馈!

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

×