Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4283|回复: 9

[已解决]怎么在选项卡位置新建自己的菜单栏呢?

[复制链接]
发表于 2016-10-24 19:44 | 显示全部楼层 |阅读模式
如图,在加载项选项卡,建立自己的菜单栏,VBA代码怎么写?谢谢
最佳答案
2016-10-25 17:25
本帖最后由 today0427 于 2016-10-25 17:28 编辑

excel2007以后的版本就不能像2003里一样随心所欲的在工具栏自定义添加菜单命令了,添加的菜单命令都会以加载项的形式显示在最后一个选项卡中,以下随便写了一个作为示例,效果图如下可以参考下。
QQ图片20161025172049.png

如果想随心所欲在选项卡中添加命令,想在哪儿显示就在哪儿显示,想屏蔽哪个按钮就屏蔽,那就需要用UI工具写成XML文件加载进来,效果图如下:
QQ图片20161025172057.png

  1. Sub 自定义工具栏()
  2. Dim i%
  3. On Error Resume Next
  4. sc
  5.     Dim mybar As CommandBar, mycl
  6.     Set mybar = Application.CommandBars.Add("菜单命令", , , 1)
  7.    mybar.Visible = True
  8.    For i = 1 To 3
  9.     Set mycl = mybar.Controls.Add
  10.     mycl.Caption = Choose(i, "我", "你", "他")
  11.     mycl.FaceId = 20 + i
  12.     Next
  13. End Sub
  14. Sub sc()
  15. Application.CommandBars("菜单命令").Delete
  16. End Sub
复制代码
2.PNG
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-10-25 17:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 today0427 于 2016-10-25 17:28 编辑

excel2007以后的版本就不能像2003里一样随心所欲的在工具栏自定义添加菜单命令了,添加的菜单命令都会以加载项的形式显示在最后一个选项卡中,以下随便写了一个作为示例,效果图如下可以参考下。
QQ图片20161025172049.png

如果想随心所欲在选项卡中添加命令,想在哪儿显示就在哪儿显示,想屏蔽哪个按钮就屏蔽,那就需要用UI工具写成XML文件加载进来,效果图如下:
QQ图片20161025172057.png

  1. Sub 自定义工具栏()
  2. Dim i%
  3. On Error Resume Next
  4. sc
  5.     Dim mybar As CommandBar, mycl
  6.     Set mybar = Application.CommandBars.Add("菜单命令", , , 1)
  7.    mybar.Visible = True
  8.    For i = 1 To 3
  9.     Set mycl = mybar.Controls.Add
  10.     mycl.Caption = Choose(i, "我", "你", "他")
  11.     mycl.FaceId = 20 + i
  12.     Next
  13. End Sub
  14. Sub sc()
  15. Application.CommandBars("菜单命令").Delete
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-10-26 09:20 | 显示全部楼层
today0427 发表于 2016-10-25 17:25
excel2007以后的版本就不能像2003里一样随心所欲的在工具栏自定义添加菜单命令了,添加的菜单命令都会以加 ...

谢谢!  为什么这个代码,可以创建  "自定义工具栏"  这个组呢,代码里没看到定义这个名词呢?
回复

使用道具 举报

发表于 2016-10-26 15:42 | 显示全部楼层
Sub 自定义工具栏()
回复

使用道具 举报

 楼主| 发表于 2016-10-26 15:54 | 显示全部楼层
today0427 发表于 2016-10-26 15:42
Sub 自定义工具栏()

Sub 自定义工具栏()   '这个定义的子过程名词,我试过改过这个名字,但是上面创建的组的名词还是 "自定义工具栏"
回复

使用道具 举报

 楼主| 发表于 2016-10-26 15:56 | 显示全部楼层
today0427 发表于 2016-10-26 15:42
Sub 自定义工具栏()

顺便问一句,这条线,自己创建的msoCommandBarPopup,怎么显示出来?
1.PNG
回复

使用道具 举报

发表于 2016-10-26 16:26 | 显示全部楼层
一沫昔阳虹w 发表于 2016-10-26 15:54
Sub 自定义工具栏()   '这个定义的子过程名词,我试过改过这个名字,但是上面创建的组的名词还是 "自定义 ...

好像就是,我也不知道,我基本不用vba写这个,觉得特别不好用,你试试看用UI工具写,非常自由,功能比较完善!
回复

使用道具 举报

 楼主| 发表于 2016-10-26 20:58 | 显示全部楼层
today0427 发表于 2016-10-26 16:26
好像就是,我也不知道,我基本不用vba写这个,觉得特别不好用,你试试看用UI工具写,非常自由,功能比较 ...

Excel的自定义IRibbonUI我会,倒是先学了那个,后来才知道CommandBar的;我这个主要用在Word上,这个比较方便,没有可查询Word的内置idMso方面的资料。
顺表请教一下,回调代码你也不用VBA吗?其他语言程序会更快些吗?

回复

使用道具 举报

发表于 2016-10-26 23:44 | 显示全部楼层
回调不就是在vba里面写啊,把他生成的回调语句粘贴出来放到模块里然后自己写语句。我也是学艺不精,word没用过,word里面的宏我只会录,你试过没,在ui里面为word写工具栏?说不定可以呢,我明天也去试试,不用请教,我还不如你
回复

使用道具 举报

 楼主| 发表于 2016-10-27 12:58 | 显示全部楼层
today0427 发表于 2016-10-26 23:44
回调不就是在vba里面写啊,把他生成的回调语句粘贴出来放到模块里然后自己写语句。我也是学艺不精,word没 ...

诶,成功了,方法一样。
在分享一个这个,昨天下载的,Office 2007版的,应该没变化吧。
11.PNG

WordRibbonControls.rar

115.79 KB, 下载次数: 70

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 12:30 , Processed in 7.733344 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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