将项目添加到上下文菜单(Microsoft Excel)
在单元格上单击鼠标右键时,Excel为您提供了功能丰富的上下文菜单,该菜单使您可以执行许多操作。您可能想要向该上下文菜单添加一些功能,尤其是当它们是您经常使用的功能时。
不幸的是,您无法以与编辑其他菜单相同的方式来编辑上下文菜单-通过使用“工具”菜单中的“自定义”。相反,您必须通过VBA操作上下文菜单。
如果要将项目添加到右键单击单元格时出现的上下文菜单中,则可以使用以下代码:
Sub AddItemToContextMenu() Dim cmdNew As CommandBarButton Set cmdNew = CommandBars("cell").Controls.Add With cmdNew .Caption = "My Procedure" .OnAction = "MyProcedure" .BeginGroup = True End With End Sub
您所需要做的就是将.Caption属性设置为您想要使用的任何菜单文本,然后更改.OnAction属性,使其指向您要使用的宏或命令。以后要删除菜单选项时,可以使用以下宏:
Sub RemoveContextMenuItem() On Error Resume Next CommandBars("cell").Controls("My Procedure").Delete End Sub
若要使用此方法,请将“我的过程”文本更改为在上一个宏的.Caption属性中使用的任何文本。万一先前未添加指定的宏项目,则在此宏中使用On Error语句。
通过稍微修改宏,您可以指定仅在右键单击特定单元格时才应添加“上下文”菜单。下面的宏检查是否单击了C10:E25范围内的单元格。如果是这样,它将在“上下文”菜单的末尾为您的过程添加一个菜单选项。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _ Cancel As Boolean) Dim cmdNew As CommandBarButton For Each icbc In Application.CommandBars("cell").Controls If icbc.Tag = "brccm" Then icbc.Delete Next icbc If Not Application.Intersect(Target, Range("c10:e25")) _ Is Nothing Then Set cmdNew = CommandBars("cell").Controls.Add With cmdNew .Caption = "My Procedure" .OnAction = "MyProcedure" .BeginGroup = True .Tag = "brccm" End With End If End Sub
在VBA编辑器中,需要将此宏添加到要与其一起使用的特定工作表中。您需要做的就是双击该工作表,在Project Explorer(VBA编辑器的左上角)中,然后将其输入到该工作表的代码窗口中。
与早期的宏一样,您需要做的就是修改为.Caption和.OnAction属性指定的设置。另外,您可能想在添加菜单选项时更改被视为“有效”的单元格范围,只需将“ c:10:e25”范围规范更改为所需范围即可。您甚至可以使用命名范围来代替单元格范围,如果您的有效范围实际上是一组不连续的单元格,则这非常有用。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2064)适用于Microsoft Excel 97、2000、2002和2003。