如何用vba在单元格右键快捷菜单中添加自定义的菜单命令?

如下图所示,当鼠标右键单击excel工作表中的单元格时,将会弹出单元格右键快捷菜单。

1

虽然从excel 2007开始 微软引进了ribbon 功能区来代替excel 常规菜单栏,但是像上图所示的鼠标右键快捷菜单还有很多没有被替代。

vba 中提供了给菜单增加自定义命令的功能。可以用CommandBar对象获取指定的菜单命令栏,然后用CommandBar对象的Controls属性获取所有的命令按钮集合,最后用新增集合元素的方法添加新的菜单命令。
比如以下代码可以在上图所示的单元格右键快捷菜单中添加自定义的菜单命令。当单击新增的“测试”菜单命令时,将会执行“lyq”子过程。

Sub xyf()
    Dim objCB As CommandBar
    '获取单元格右键快捷菜单命令栏
    Set objCB = Excel.Application.CommandBars("Cell")
    Dim oCBC As CommandBarControl
    With objCB
        .Reset
        '往单元格右键快捷菜单中新增菜单命令
        Set oCBC = .Controls.Add(before:=1)
        With oCBC
            '指定单击新增的命令时执行的子过程名称
            .OnAction = "lyq"
            .Caption = "测试"
        End With
    End With
End Sub
Sub lyq()
    MsgBox 1
End Sub

如图所示

2

 

       

发表评论