有没有办法访问所有内置Cell Context Menu功能的代码?
我特意想要运行" AddComment" RightClick上下文菜单中的功能 - 但我已经构建了一个自定义上下文菜单。
它的作用不仅仅是添加评论。它打开注释并添加我的名字并选择它。它很好,我想在自定义上下文菜单中应用该功能。因此,我要么需要暂停该功能的代码,要么拨打电话'我的自定义上下文菜单中的函数本身。
修改 我想我需要更具体一点:
所以,我不想劫持上下文菜单。我想使用它!但是我已经创建了一个自定义右键单击上下文菜单,我想从原始的右键单击上下文菜单中插入一个函数。
答案 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;功能。不可思议?