大家好,我准备使用this MSDN page上的说明在Excel工作簿的单元格上下文菜单(不是功能区)中添加一些自定义控件。我唯一的问题是我需要只为特定列/单元格范围启用项目。
我环顾四周,而且我一直无法找到任何步骤 - 有一些用于VSTO开发(用C#编写),但这不是我需要的。我打算使用Office内置的VBA IDE编写这个,也许使用Custom UI Editor编写一些XML。
所以基本上,我正在寻找一种方法来在调用上下文菜单时(即,在右键单击时)运行一个函数,该函数验证选择以确保它在适当的列中。如果不是,我希望我的自定义按钮显示为灰色。 注意:根本无法使用验证功能,老实说,我没有任何线索。如果有更好的方法,请随意分享(我愿意接受建议)。
请不要以为我要求你写我的代码。创建这些按钮应该非常简单,因为我之前创建了很多按钮(尽管它们都是Ribbon项目),我希望可以在这个非常具体的问题上寻求快速帮助。
提前谢谢!
答案 0 :(得分:1)
试试这个:
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim rclk As CommandBarControl
If Target.Address(RowAbsolute:=False) = "$A1" Then
Set rclk = Application.CommandBars("Cell").FindControl(Tag:="RightClickMenu1")
With rclk
.Enabled = False
End With
Else
Set rclk = Application.CommandBars("Cell").FindControl(Tag:="RightClickMenu1")
With rclk
.Enabled = True
End With
End If
End Sub
“RightClickMenu1”是在Workbook_Open()中创建的,除此之外我认为代码不言自明。