是否有任何方式访问所有内置的单元格上下文菜单函数的代码?
我特别希望从AddComment上下文菜单中运行“RightClick”函数--但我已经构建了一个自定义上下文菜单。
它所做的不仅仅是添加评论。它打开注释并添加我的名字并选择它。这很好,我想在自定义上下文菜单中应用这个函数。因此,我要么需要保留该函数的代码,要么从我的自定义上下文菜单中“调用”函数本身。
编辑:我想我需要更具体一点:
所以,我不想劫持上下文菜单。我想使用 it!但是我已经创建了一个自定义的右键上下文菜单,其中我想从原始的右键上下文菜单中插入一个函数。
发布于 2015-12-01 14:05:24
您应该能够使用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-02 05:41:58
可能的解决办法:
一步步地:
为了使这一工作正常进行,我只添加了以下代码:
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请注意,标题在每种语言中都是不同的。我有瑞典语,所以在英语中,它可能与“插入c”而不是"Infoga ko“一起工作。
为了获得正确的标题,可以循环如下所有控件:
For Each Cnt In .Controls
Debug.Print Cnt.Caption
Next Cnt运行这段代码后,我将只剩下“插入注释”函数,然后就可以开始添加自己的控件了!
更新:不,这不起作用。这个函数不能运行。单击“插入注释”函数时不会发生任何事情。奇怪吗?
https://stackoverflow.com/questions/34021820
复制相似问题