从默认的右键单击上下文菜单添加一个功能到自定义上下文菜单?

时间:2015-12-01 13:38:23

标签: excel vba custom-contextmenu

有没有办法访问所有内置Cell Context Menu功能的代码?

我特意想要运行" AddComment" RightClick上下文菜单中的功能 - 但我已经构建了一个自定义上下文菜单。

它的作用不仅仅是添加评论。它打开注释并添加我的名字并选择它。它很好,我想在自定义上下文菜单中应用该功能。因此,我要么需要暂停该功能的代码,要么拨打电话'我的自定义上下文菜单中的函数本身。

修改 我想我需要更具体一点:

  • 标注的操作"插入评论"位于单元格右键单击上下文菜单中。
  • 我想将该功能复制到我自己的(自定义)右键单击上下文菜单中。
  • 有没有人能看到excel中所有内置函数的实际代码?我正在谈论这些右键单击功能,例如。

所以,我不想劫持上下文菜单。我想使用它!但是我已经创建了一个自定义右键单击上下文菜单,我想从原始的右键单击上下文菜单中插入一个函数。

2 个答案:

答案 0 :(得分:0)

您应该能够使用VBA从正常的单元格上下文菜单中完成所有操作。如果您使用记录宏,则可以单击菜单,然后查看代码以查看记录的内容。例如,用于插入注释的宏录制会生成此代码....

Range("A1").Select
Range("A1").AddComment
Range("A1").Comment.Visible = False
Range("A1").Comment.Text Text:="Your Name:" & Chr(10) & ""

修改
我想我最初理解OP是在询问如何为默认的上下文菜单操作获取相应的VBA代码。我认为实际上被问到的是如何"劫持"内置的上下文菜单操作本身。正如Ambie评论的那样,这可以如下所示完成。

Sub HijackContextMenuInsertComment()
    Dim ContextMenu As CommandBar
    Set ContextMenu = Application.CommandBars("Cell")
    ContextMenu.Controls.Item(13).OnAction = "Test"
End Sub
Sub Test()
    MsgBox "I've been hijacked"
End Sub

答案 1 :(得分:0)

可能的解决方法:

一步一步:

  • 使用默认上下文菜单
  • 删除除"插入评论"
  • 以外的所有项目
  • 将自定义函数添加到上下文菜单
  • 现在我应该拥有自己的所有功能和"插入评论"功能

为了完成这项工作,我只需添加以下代码:

Dim Cnt As CommandBarControl
With Application.CommandBars("Cell")
    For Each Cnt In .Controls
        If InStr(1, Cnt.Caption, "Infoga ko") = 0 Then Cnt.Delete
    Next Cnt
End with

请注意,每种语言的标题都不同。我用瑞典语得到它,所以在英语中它可能与#34;插入c"而不是" Infoga ko"。

为了获得正确的标题,您可以循环所有控件:

For Each Cnt In .Controls
    Debug.Print Cnt.Caption
Next Cnt

运行此代码后,我将只有"插入评论"函数离开然后我可以开始添加我自己的控件了!

<强>更新 不,这不行。该功能不会运行。单击&#34;插入评论&#34;功能。不可思议?