分享

CommandBar介绍-右键菜单

 yuxinrong 2010-01-12
2009年2月22日

最后介绍的右键菜单其实也是属于一种菜单命令栏。我们可以在常用的右键菜单栏中添加自定义菜单,也可以创建新的自定义右键菜单代替默认的设置。

例如,下面的例子中工作表区域的右键菜单添加自定义菜单命令栏。

Sub AddRightClickMenu()
' 单元格区域右键菜单
    With Application.CommandBars("cell")
.Reset
' 添加控件
        With .Controls.Add(Type:=msoControlButton)
.Caption = "Test Right Click"           ' 标题
            .BeginGroup = True                      ' 分类,添加分隔线
            .OnAction = "MenuProc"                ' 指定处理过程
        End With
End With
End Sub


执行上面的过程之前,在工作表区域中右键点击任意单元格,显示的弹出菜单如下图:

执行AddRightClickMenu过程后,将在弹出的右键菜单中添加“Test Right Clock”命令栏,显示如下:

使用下面的语句可以删除这个自定义右键菜单命令栏。

CommandBars("cell").Controls("Test Right Click").Delete

同样,也可以创建自己的CommandBar来代替默认的右键菜单。

Sub CreateRightClickMenu()
Dim newTool As CommandBar
Dim i As Integer
 
' 如果已经存在相同名称的CommandBar,删除它
    On Error Resume Next
CommandBars("RightClick Popup").Delete
On Error GoTo 0
 
' 创建名称为“RightClick Popup”的自定义菜单栏
    Set newTool = CommandBars.Add(Name:="RightClick Popup", Position:=msoBarPopup)
 
With newTool
With .Controls.Add(ID:=19)
.Caption = "复制"
End With
With .Controls.Add(ID:=22)
.Caption = "粘帖"
End With
With .Controls.Add(ID:=1733)
.Caption = "缩放"
End With
End With
End Sub

运行CreateRightClickMenu过程,将创建名称为“RightClick Popup”的自定义菜单栏,并在其上添加三个内置命令栏。
自定义菜单栏添加完成后,还需要替换默认的设置。需要在工作表的BeforeRightClick事件或Workbook的SheetBeforeRightClick事件中添加下面的代码。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim cbRightClick As CommandBar
' 确保只有在自定义右键菜单存在时才显示
    On Error Resume Next
Set cbRightClick = Nothing
' 如果自定义右键菜单不存在,那么cbrRightClick设置为Nothing
        Set cbRightClick = Application.CommandBars("RightClick Popup")
On Error GoTo 0
 
If Not cbRightClick Is Nothing Then
' 显示自定义右键菜单
        cbRightClick.ShowPopup
' 取消默认右键菜单
        Cancel = True
End If
End Sub

这样在放置这个代码的工作表或整个工作簿中的单元格区域中点击右键,将显示自定义的右键菜单,如下图:

示例文件下载:Box.Net | SkyDrive

另外,在示例文件中还包括了一个小工具,这个工具列出所有CommandBar的命令栏。其中包括这些命令栏的一些基本属性。这些基本属性的数值所代表的意思可以在代码的注释中了解。界面如下图,点击“获取CommandBar列表”按钮即可。

Related posts:

  1. CommandBar介绍-工具栏
  2. CommandBar介绍-菜单栏
  3. Excel中的窗体控件和ActiveX控件
  4. 提取丢失数据源的图表中的数据
  5. VBA中的控件数组

以上关联文章由 Yet Another Related Posts Plugin 提供支持。

VBA , ,

  1. willing001
    2009年6月8日12:08 | #1

    我想问如何在右键菜单中添加超链接。我想做的是,在office软件中选中文字,点击右键的搜索,就能打开ie并自动用google或者百度对选中的文字进行搜索。

  2. 2009年6月9日22:21 | #2

    @willing001
    这个其实只是处理一下右键过程怎样打开IE搜索选择的文字,这里用Shell来做,也可以使用CreateObject创建IE对象。
    Sub AddRightClickMenu()
    With Application.CommandBars(”cell”)
    .Reset
    With .Controls.Add(Type:=msoControlButton)
    .Caption = “Search”
    .BeginGroup = True
    .OnAction = “RightClickProc”
    End With
    End With
    End Sub

    Sub RemoveRightClickMenu()
    On Error Resume Next
    CommandBars(”cell”).Controls(”Search”).Delete
    End Sub

    Sub RightClickProc()
    Dim strTemp As String
    strTemp = Selection.Value
    Shell “C:\Program Files\Internet Explorer\iexplore.exe http://www.google.cn/search?hl=zh-CN&q=” & strTemp, vbNormalFocus
    End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多