可以使用 Access 宏创建自定义快捷菜单,当你右键单击窗体、报表或单个控件时就会显示这些菜单。 还可以为特定窗体或报表创建显示在功能区上的自定义菜单。
要使用宏创建菜单,请执行三个主要步骤:
- 创建包含菜单命令的子宏的宏对象。
- 创建另一个创建菜单本身的宏对象。
- 将菜单附加到控件、窗体、报表或整个数据库。
以下部分详细介绍这些步骤。
提示
若要了解如何使用 VBA) 代码在 Access 中创建自定义快捷菜单Visual Basic for Applications (请参阅为窗体、窗体控件或报表创建快捷方式菜单一文。
第 1 步:创建包含菜单命令的子宏的宏对象
在此步骤中,你将创建一个包含子宏的宏对象,其中每个子宏都将是快捷菜单上的单独命令。
什么是子宏?
可以使用宏对象中的子宏来定义一组宏操作。 可以与各种控件和对象事件分开调用宏对象中的子宏。 宏对象中的各个子宏都具有唯一的名称,可以包含一个或多个宏操作。
在“创建”选项卡上的“宏和代码”组中,单击“宏”。
对于自定义快捷菜单上所需的每个命令:
将 子宏宏语句 添加到宏设计窗口,并为子宏命名要在快捷菜单上显示的内容 (例如“打印”或“刷新”) 。
提示
若要创建访问键,以便可以使用键盘选择命令,请在命令名称中要用作访问键的字母之前键入与号 (&) (,例如“&Refresh”) 。 这封信将在菜单上加下划线。
在子宏中,选择单击快捷菜单上的命令时要执行的第一个操作。
如果在选择此命令时要执行更多操作,请将它们添加为同一子宏中的单独宏操作。
保存宏对象并将其命名为 mcrShortcutMenuCommands。
下图显示了一个示例宏对象,其中包含用于自定义菜单或快捷菜单的三个子宏。
第 2 步:创建用于创建菜单的第二个宏对象
此步骤看似多余,但若要从在步骤 1 中创建的宏对象创建快捷菜单,必须创建包含 AddMenu 宏操作的第二个宏对象。 此宏操作有时称为“菜单宏”。
- 在“创建”选项卡上的“宏和代码”组中,单击“宏”。
- 在宏设计窗口的“ 添加新操作 ”组合框中,选择 AddMenu。
- 在 AddMenu 宏操作的“菜单名称”参数框中,键入菜单 (的名称,例如“窗体命令”) 。 此参数不是必需的,但如果在步骤 3 中计划将菜单添加到功能区选项卡 (如窗体或报表) 的 “加载项 ”选项卡,则建议使用此参数。 如果在步骤 3 中将菜单添加为快捷菜单,则将忽略 “菜单名称 ”参数。
- 在 “菜单宏名称 ”参数框中,输入在步骤 1 中创建的宏对象的名称。
- 保存并命名第二个宏对象,例如 mcrAddShortcutMenu。
下图显示了一个示例菜单宏对象,用于创建我们在步骤 1 中设计的菜单。
步骤 3:将菜单附加到控件、窗体、报表或数据库
根据要显示菜单的位置,使用以下一个或多个过程。
将菜单添加到窗体或报表的“Add-Ins”选项卡
如果希望该菜单显示在特定窗体或报表的“ 加载项 ”选项卡上,请使用此过程。
- 在导航窗格中,右键单击要显示菜单的窗体或报表,然后单击“ 设计视图”。
- 在“设计”选项卡上的“工具”组中,单击“属性表”。
- 通过从“属性表”任务窗格顶部的列表中选择“ 窗体 ”或“ 报表 ”来选择整个对象。
- 在“属性表”上“ 其他 ”选项卡的 “菜单栏 ”属性框中,键入在步骤 2 中创建的宏对象的名称, (在本例中“mcrAddShortcutMenu”) 。
- 保存表单或报告更改。
下次打开窗体或报表时,加载 项 选项卡将显示在功能区中。 单击选项卡以查看菜单,如下图所示:
有关功能区自定义技术(例如添加自定义选项卡或隐藏默认选项卡)的详细信息,请参阅在 Access 中创建自定义功能区一文。
将菜单添加为窗体、报表或控件的快捷菜单
如果希望在右键单击特定窗体、报表或控件时显示菜单,请使用此过程。
- 在导航窗格中,右键单击要显示快捷菜单的窗体或报表,然后单击“ 设计视图”。
- 在“设计”选项卡上的“工具”组中,单击“属性表”。
- 选择要附加快捷菜单的控件或对象。
若要选择整个对象,请从“属性表”任务窗格顶部的列表中选择“ 窗体 ”或“ 报表 ”。 - 在“属性表”上“ 其他 ”选项卡的“ 快捷菜单栏 ”属性框中,键入在本示例中 (步骤 2 中创建的宏对象的名称“mcrAddShortcutMenu”) 。
- 确保 “快捷菜单 ”属性设置为 “是”。
- 保存表单或报告更改。
下次打开窗体或报表,然后右键单击窗体、报表或控件时,将看到带有关联命令的快捷菜单,如下图所示:
将菜单添加为全局快捷菜单
此过程将替换当前数据库中的所有默认快捷菜单。 附加到特定窗体、报表或控件的自定义快捷菜单不受影响。
- 单击 “文件>选项”。
- 在“Access 选项”对话框中,单击“当前数据库”。
- 在“ 功能区和工具栏选项”下的 “快捷菜单栏 ”框中,键入在步骤 2 中创建的宏的名称 (在本例中“mcrAddShortcutMenu”) 。
- 单击 确定 保存你在 “Access 选项” 对话框中所做的更改。
- 关闭数据库,然后重新打开数据库,使更改生效。
自定义快捷菜单将替换它们所附着到的对象的默认快捷菜单。 如果要保留要在这些菜单上使用的某些 Access 命令,请使用 RunCommand 宏操作将这些命令放入要在菜单中的宏对象中。
附加到控件的自定义快捷菜单取代数据库中定义的任何其他自定义快捷菜单。 附加到窗体或报表的自定义快捷菜单取代了自定义全局快捷菜单。
为窗体、报表或数据库指定菜单宏时,只要打开窗体、报表或数据库,Access 就会运行此菜单宏。 如果在窗体、报表或数据库打开时对菜单宏对象或定义其命令的宏对象进行更改,则必须关闭窗体、报表或数据库,然后重新打开它才能查看更改。
若要在命令的快捷菜单列表中创建子菜单,请按照步骤 1 创建一个仅包含子菜单命令的单独宏对象,如下图所示:
然后,再次执行步骤 1 定义更高级别菜单对象的命令。 使用 AddMenu 宏操作将子菜单添加为更高级别宏对象中的项。 下图显示了包含子菜单的菜单的宏对象。 此示例宏对象中的第三个子宏创建“ 导出到... ”子菜单 (mcrShortcutSubMenuCommands) 。
下图显示了包含子菜单的已完成快捷菜单:
您可以通过在每个级别菜单的宏对象中使用 AddMenu 宏操作来创建多个级别的子菜单。 确保为每个 AddMenu 操作的“菜单名称”参数提供值,否则子菜单将在更高级别的菜单中显示为空白行。
仅顶层菜单宏对象支持使用 If/Then/Else 块的宏表达式条件。 换句话说,您可以在菜单宏对象中使用条件表达式来确定是否将显示特定菜单或快捷菜单,但仅适用于顶层的菜单。 不能使用条件表达式在菜单上显示或隐藏命令或子菜单。 还可以使用条件表达式隐藏或显示自定义快捷菜单或全局快捷菜单。
(可选)在步骤 2 中创建的菜单宏可以是宏对象的一部分。 例如,如果不同的对象或控件有多个快捷菜单,则可以创建包含所有必要菜单宏的单个宏对象。 请确保每个子宏具有唯一的名称。 在步骤 3 中,使用以下表示法引用宏: MacroObjectName.SubmacroName。 例如, mcrAddShortcutMenus.AddMenu2。