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