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

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

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

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

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

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

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

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

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

在此步骤中,你将创建一个包含子宏的宏对象,其中每个子宏将是快捷菜单上的一个单独的命令。

什么是子macro?

可以使用宏对象中的子宏来定义一组宏操作。 宏对象中的子宏可以独立于各种控件和对象事件调用。 宏对象中的单个子宏具有唯一名称,可以包含一个或多个宏操作。

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

  2. 对于自定义快捷菜单上需要的每个命令:

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

      提示: 若要创建访问键,以便可以使用键盘选择命令,在要作为访问键的字母之前键入一个与号 (&) ,例如 ("&刷新") 。 此字母将在菜单上带有下划线。

    2. 在子文件夹内,选择单击快捷菜单上的命令时要执行的第一个操作。

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

  3. 保存宏对象并将其命名,例如mcrShortcutMenuCommands。

    下图显示了自定义菜单或快捷菜单具有三个子宏的示例宏对象。

    Access 宏设计窗口的屏幕截图,该窗口具有三个子宏语句。

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

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

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

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

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

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

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

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

    包含 AddMenu 宏操作的访问宏对象的屏幕截图。

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

根据菜单的显示位置,使用以下一个或多个过程。

将菜单添加到窗体Add-Ins报表的"报表"选项卡

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

  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. 单击 " 确定"以在"访问选项 "对话框中保存 更改。

  5. 关闭然后重新打开数据库,使更改生效。

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

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

为窗体或报表或数据库指定菜单宏时,每当打开窗体、报表或数据库时,Access 都会运行此菜单宏。 如果在窗体、报表或数据库打开时对定义其命令的菜单宏对象或宏对象进行更改,则必须关闭窗体、报表或数据库并重新打开以查看更改。

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

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

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

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

下图显示了生成的包含子菜单的已完成快捷菜单:

包含子菜单的快捷菜单的屏幕截图

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

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

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

返回页首

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

与更高版本相比,Access 2007 中的宏设计窗口不同,因此,如果使用的是 Access 2007,请展开以下部分以遵循。

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

什么是宏组?

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

宏组示例

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

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

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

  3. 对于自定义快捷菜单上需要的每个命令:

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

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

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

    • 如果在选择此命令时要执行更多操作,请在后续行中添加这些操作。 对于每个后续操作,将 "宏名称"单元格留 空。

      1. 注意: 若要在两个菜单命令之间创建一行, (菜单命令) "宏名称 "列中键入 连字符。

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

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

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

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

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

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

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

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

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

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

“设计”视图中的菜单宏

根据菜单的显示位置,使用以下一个或多个过程。

  • 将菜单添加到窗体Add-Ins报表的"报表"选项卡

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

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

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

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

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

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

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

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

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

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

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

    简单的快捷菜单

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

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

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

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

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

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

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

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

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

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

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

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

  • 为窗体或报表或数据库指定菜单宏时,每当打开窗体、报表或数据库时,Access 都会运行此菜单宏。 如果在窗体、报表或数据库打开时对定义其命令的菜单宏或宏组进行更改,则必须关闭窗体、报表或数据库并重新打开以查看更改。

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

    包含子菜单的快捷菜单

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

  • 仅顶级菜单宏支持宏条件。 换言之,可以使用菜单宏中的条件来确定是否显示特定菜单或快捷菜单,但仅针对顶级菜单。 你不能使用条件在菜单上显示或隐藏命令或子菜单。 您也可以使用条件来隐藏或显示自定义快捷菜单或全局快捷菜单。

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

返回页首

需要更多帮助?

扩展你的技能
了解培训

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈!

×