0

情景

大家好,我将使用此 MSDN 页面上的说明在我的 Excel 工作簿中的单元格上下文菜单(不是功能区)中添加一些自定义控件。我遇到的唯一问题是我需要仅为特定列/单元格范围启用这些项目。

我环顾四周,找不到任何步骤——有一些用于 VSTO 开发(用 C# 编写),但这不是我需要的。我计划使用 Office 中内置的 VBA IDE 编写此代码,也许还可以使用自定义 UI 编辑器编写一些 XML 。


问题

所以基本上,我正在寻找一种在调用上下文菜单时(即右键单击)运行函数的方法,该函数验证选择以确保它位于适当的列中。如果不是,我希望我的自定义按钮显示为灰色。注意:这可能根本无法通过验证功能完成,老实说,我不知道。如果有更好的方法,请随时分享(我愿意接受建议)。


附言

请不要以为我在要求您编写我的代码。创建这些按钮应该非常简单,因为我之前创建了很多(尽管它们都是功能区项目),我希望可以就这个非常具体的问题寻求一些快速帮助。

先感谢您!

4

1 回答 1

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() 中创建的,除了我认为该代码是不言自明的。

于 2014-08-19T16:35:11.470 回答