0

有没有办法访问所有内置单元格上下文菜单功能的代码?

我特别希望从 RightClick 上下文菜单中运行“AddComment”功能 - 但我已经构建了一个自定义上下文菜单。

它所做的不仅仅是添加评论。它打开评论并添加我的名字并选择它。很好,我想在自定义上下文菜单中应用该功能。所以我要么需要保留该函数的代码,要么从我的自定义上下文菜单中“调用”函数本身。

编辑: 我认为我需要更具体:

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

所以,我不想劫持上下文菜单。我想它!但是我创建了一个自定义右键单击上下文菜单,我想在其中插入原始右键单击上下文菜单中的功能。

4

2 回答 2

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

请注意,每种语言的标题都不同。我有瑞典语,所以在英语中它可能与“Insert c”而不是“Infoga ko”一起使用。

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

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

运行此代码后,我将只剩下“插入注释”功能,然后我就可以开始添加自己的控件了!

更新: 不,这不起作用。该功能不会运行。单击“插入评论”功能时没有任何反应。诡异的?

于 2015-12-02T05:41:58.567 回答
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
于 2015-12-01T14:05:24.003 回答