ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9644|回复: 17

[学习资源]之如何建立二级子菜单!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2002-3-17 10:26 | 显示全部楼层 |阅读模式
以下是引用gzk在2002-3-17 9:47:51的发言: 在自定义菜单的示例代码中任何菜单项下,加上如下语句: Set Ctrl1 = newMenu.Controls.Add(Type:=msoControlPopup, Id:=1) Ctrl1.Caption = "自建二级菜单" 再启动就可出现二级菜单容器符号和空框。这一步,是成功的。 这时,用第三种方法,向该框中添加命令,并录制下来。可惜的是,得到的代码不能执行。 这个问题是:如何接着向二级菜单容器中添加命令。这是本人解决不了的问题,希望各位高手来攻下这个难题。 我很同意这样的观点:各位高手把自己的一般性的常用的基础性的实用的得意之作制成示例发布,对初学者是个捷径,在这样的基础上进行研究讨论,肯定能再提高本论坛的水平。 果泽奎
这个问题可以解决,参阅以下代码 Option Explicit Sub CreateMenu() Dim Menu As CommandBarControl, SubMenu As CommandBarControl Set Menu = Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True) With Menu .Caption = "我的菜单(&M)" End With With Menu.Controls.Add(msoControlButton, 1, , , True) .Caption = "菜单1" .OnAction = "wswx" End With With Menu.Controls.Add(msoControlButton, 1, , , True) .Caption = "菜单2" .OnAction = "wswx" End With Set SubMenu = Menu.Controls.Add(msoControlPopup, 1, , , True) With SubMenu .Caption = "菜单3" .BeginGroup = True End With With SubMenu.Controls.Add(msoControlButton, 1, , , True) .Caption = "子菜单1" .OnAction = "wswx" .Style = msoButtonIconAndCaption .FaceId = 71 End With With SubMenu.Controls.Add(msoControlButton, 1, , , True) .Caption = "子菜单2" .OnAction = "wswx" .Style = msoButtonIconAndCaption .FaceId = 72 End With Set SubMenu = SubMenu.Controls.Add(msoControlPopup, 1, , , True) With SubMenu .Caption = "子菜单3" .BeginGroup = True End With With SubMenu.Controls.Add(msoControlButton, 1, , , True) .Caption = "二级菜单1" .OnAction = "wswx" .Style = msoButtonIconAndCaption .FaceId = 71 End With With SubMenu.Controls.Add(msoControlButton, 1, , , True) .Caption = "二级菜单2" .OnAction = "wswx" .Style = msoButtonIconAndCaption .FaceId = 72 End With With Menu.Controls.Add(msoControlButton, 1, , , True) .Caption = "删除菜单" .OnAction = "DeleteMenu" .Style = msoButtonIconAndCaption .FaceId = 463 .BeginGroup = True End With End Sub Sub wswx() MsgBox "这只是个范例!", vbInformation, "制作:WSWX" End Sub Sub DeleteMenu() Application.CommandBars(1).Controls("我的菜单(&M)").Delete End Sub

TA的精华主题

TA的得分主题

发表于 2004-2-17 11:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-9-7 14:43 | 显示全部楼层
其实无须VBA也可以实现建立 二级菜单!

TA的精华主题

TA的得分主题

发表于 2006-9-23 14:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
见好就收。

TA的精华主题

TA的得分主题

发表于 2008-5-30 21:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-5-31 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习一下!!
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2008-12-10 19:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-12-18 12:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据有效性加INDIRECT函数,就可以解决这个问题

TA的精华主题

TA的得分主题

发表于 2009-2-17 02:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-7-20 14:18 | 显示全部楼层
梳理一下代码的格式……
  1. Sub CreateMenu()
  2.     Dim Menu As CommandBarControl, SubMenu As CommandBarControl
  3.     Set Menu = Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
  4.     With Menu
  5.         .Caption = "我的菜单(&M)"
  6.     End With
  7.     With Menu.Controls.Add(msoControlButton, 1, , , True)
  8.         .Caption = "菜单1"
  9.         .OnAction = "wswx"
  10.     End With
  11.     With Menu.Controls.Add(msoControlButton, 1, , , True)
  12.         .Caption = "菜单2"
  13.         .OnAction = "wswx"
  14.     End With
  15.         Set SubMenu = Menu.Controls.Add(msoControlPopup, 1, , , True)
  16.     With SubMenu
  17.         .Caption = "菜单3"
  18.         .BeginGroup = True
  19.     End With
  20.     With SubMenu.Controls.Add(msoControlButton, 1, , , True)
  21.         .Caption = "子菜单1"
  22.         .OnAction = "wswx"
  23.         .Style = msoButtonIconAndCaption
  24.         .FaceId = 71
  25.     End With
  26.     With SubMenu.Controls.Add(msoControlButton, 1, , , True)
  27.         .Caption = "子菜单2"
  28.         .OnAction = "wswx"
  29.         .Style = msoButtonIconAndCaption
  30.         .FaceId = 72
  31.     End With
  32.     Set SubMenu = SubMenu.Controls.Add(msoControlPopup, 1, , , True)
  33.     With SubMenu
  34.         .Caption = "子菜单3"
  35.         .BeginGroup = True
  36.     End With
  37.     With SubMenu.Controls.Add(msoControlButton, 1, , , True)
  38.         .Caption = "二级菜单1"
  39.         .OnAction = "wswx"
  40.         .Style = msoButtonIconAndCaption
  41.         .FaceId = 71
  42.     End With
  43.     With SubMenu.Controls.Add(msoControlButton, 1, , , True)
  44.         .Caption = "二级菜单2"
  45.         .OnAction = "wswx"
  46.         .Style = msoButtonIconAndCaption
  47.         .FaceId = 72
  48.     End With
  49.     With Menu.Controls.Add(msoControlButton, 1, , , True)
  50.         .Caption = "删除菜单"
  51.         .OnAction = "DeleteMenu"
  52.         .Style = msoButtonIconAndCaption
  53.         .FaceId = 463
  54.         .BeginGroup = True
  55.     End With
  56.    
  57. End Sub

  58. Sub wswx()
  59.     MsgBox "这只是个范例!", vbInformation, "制作:WSWX"
  60. End Sub

  61. Sub DeleteMenu()
  62.     Application.CommandBars(1).Controls("我的菜单(&M)").Delete
  63. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 07:01 , Processed in 0.047089 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表