转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 办公软件 >> 正文
使用VBA向Excel菜单栏添加新菜单的通用方法         ★★★★

使用VBA向Excel菜单栏添加新菜单的通用方法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:4756 更新时间:2010/6/21 21:53:24

  问题需求:

  1、菜单栏属于CommandBars集合,可以通过菜单栏名称或索引值对其进行引用:CommandBars(“Worksheet Menu Bar”)或CommandBars(1)

  2、新添加的菜单是一个弹出式控件,其类型为msoControlPopup。

  3、通过Add方法向Controls集合中添加新的控件。Add方法可以指定控件的类型、内置控件的ID号、位置及是否是一个临时控件。如果是一个临时控件,则在关闭Excel时会自动删除该菜单。

  4、可以指定新菜单的位置。如果不指定,则会在菜单工具栏末尾添加新菜单。

  5、使用Caption属性指定新菜单的名称,使用OnAction属性指定单击菜单后的行为。

  6、为了避免指定的菜单不存在,可以使用FindControl方法查找要指定的菜单。若指定的菜单不存在,则在工作表菜单栏末尾添加新菜单。

  以下是向Excel工作表菜单栏中添加菜单的VBA代码:

  Sub AddNewMenu()
  Dim HelpMenu As CommandBarControl
  Dim NewMenu As CommandBarPopup
   
  '利用ID属性查找帮助菜单
  Set HelpMenu = CommandBars(1).FindControl(ID:=30010)
   
    If HelpMenu Is Nothing Then
        '如果该菜单不存在,则将新菜单添加到末尾
        '设置新菜单为临时的
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Temporary:=True)
    Else
        '将新菜单添加到帮助菜单之前
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Before:=HelpMenu.Index, _
          Temporary:=True)
    End If
   
  '添加标题并指定快捷键
  NewMenu.Caption = "统计(&S)"
  End Sub

  运行该过程后,将在工作表菜单的“帮助”菜单左侧添加一个名为“统计”的新菜单。

  注:要删除新添加的菜单,使用Delete方法即可,例如代码:

CommandBars(1).Controls("统计(&S)").Delete
将删除刚创建的“统计”菜单。
添加菜单项
与添加新菜单一样,在添加菜单项及子菜单时,使用Add方法,且指定合适的控件类型,其代码清单如下:
Sub AddNewMenu()
    Dim HelpMenu As CommandBarControl
    Dim NewMenu As CommandBarPopup
    Dim MenuItem As CommandBarControl
    Dim SubMenuItem As CommandBarButton
   
    On Error Resume Next
    '如果菜单已存在,则删除该菜单
    CommandBars(1).Controls("统计(&S)").Delete
   
    '利用ID属性查找帮助菜单
    Set HelpMenu = CommandBars(1).FindControl(ID:=30010)
   
    If HelpMenu Is Nothing Then
        '如果该菜单不存在,则将新菜单添加到末尾
        '设置新菜单为临时的
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Temporary:=True)
    Else
        '将新菜单添加到帮助菜单之前
        Set NewMenu = CommandBars(1).Controls _
          .Add(Type:=msoControlPopup, Before:=HelpMenu.Index, _
          Temporary:=True)
    End If
   
    '添加菜单标题并指定热键
    NewMenu.Caption = "统计(&S)"
   
    '添加第一个菜单项
    Set MenuItem = NewMenu.Controls.Add _
      (Type:=msoControlButton)
    With MenuItem
        .Caption = "输入数据(&D)..."
        .FaceId = 162
        .OnAction = "Macro1"
    End With
   
    '添加第二个菜单项
    Set MenuItem = NewMenu.Controls.Add _
      (Type:=msoControlButton)
    With MenuItem
        .Caption = "汇总数据(&T)..."
        '添加快捷键
        .ShortcutText = "Ctrl+Shift+T"
        .FaceId = 590
        .OnAction = "Macro2"
    End With
   
    '添加第三个菜单项
    '本菜单有子菜单项,因此其类型为msoControlPopup
    Set MenuItem = NewMenu.Controls.Add _
      (Type:=msoControlPopup)
    With MenuItem
        .Caption = "数据报表(&R)..."
        '添加分隔线
        .BeginGroup = True
    End With
   
    '添加子菜单
    '添加第一个子菜单
    Set SubMenuItem = MenuItem.Controls.Add (Type:=msoControlButton)
    With SubMenuItem
        .Caption = "月汇总(&M)"
        .FaceId = 110
        .OnAction = "Macro3"
    End With
   
    '添加第二个子菜单
    Set SubMenuItem = MenuItem.Controls.Add _
      (Type:=msoControlButton)
    With SubMenuItem
        .Caption = "季度汇总(&Q)"
        .FaceId = 222
        .OnAction = "Macro4"
    End With
End Sub

  注意,菜单类型的不同,有二个菜单项(类型为msoControlButton)、有一个菜单项带有子菜单(其类型为msoControlPopup)FaceID属性确定出现在菜单文本旁边的图像,以数字表示,一个数字代表一个内置的图像。
在Caption属性中使用&号表示该菜单项的热键。

  在第二个菜单项中,利用ShortcutText属性为该菜单项添加了一个快捷键,用户按此快捷键可以直接运行命令。


[办公软件]使用VBA统计出重复的值  [办公软件]使用VBA给Excel自选图形添加文字的代码
[办公软件]Excel使用VBA根据不同客户动态设置不同标题行和打…  [VB.NET程序]使用vb 6和vb.net为Office应用添加工具栏和按钮
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台