vba commondialog控件添加不上_MyVBA加载宏——添加自定义菜单03——功能分析

42e2bdcc45a1533c94a1eb2410e7b994.png

功能分析

要实现的这个添加代码的菜单,需要具备以下几个特点:

  • 要添加的项目肯定会不停的改变,所以必须要能够方便添加代码和自动更新。

  • 即能添加单个的按钮,也能在菜单上继续添加下拉式的菜单,这样方便一些同类型的功能放在一起。

01 自动更新

要自动更新是比较简单的,只要在加载宏打开的时候,执行一次添加菜单的功能即可,所以,需要在加载宏的Thisworkbook模块添加代码:

Private Sub Workbook_Open()    Call AddCommanBarEnd Sub

这样加载宏打开的时候,每次都去重新创建一次菜单,只要把创建菜单的代码逻辑规划好就可以。

02 分类自动添加

因为需要分类(单独按钮和新的弹出式)创建,所以必须有个地方能够让我们知道要创建的是什么类型的,个人做法是:

毕竟这个不是非常复杂的程序,所以在一个单独的文件夹专门存放代码,然后手动创建一个目录,平时只要去维护这个目录即可。

目录的信息主要有:

msoControl  添加控件类型(单独按钮和新的弹出式)caption    控件的显示名称faceID    控件的图标endflag    这个是标记弹出式控件结束的

按如下格式创建一个CommandBarDir.txt文件:

msoControl,caption,faceID,endflag1,vba_main,538,1,i_row,73,10,Object,361,1,dic,2,1,ado,50,1,fso,53,1,json,203,1,Clipboard,19,1

每增加一个代码文件的时候,都要在目录中添加一行信息。这种常用的片段代码个人认为不会特别多,所以手动维护一个这样的目录应该不难。

前面的1和10对应的分别是msoControlButton和msoControlPopup,这个数字可以在立即窗口这样输入查看:

?msoControlButton

这个就是VBA内置定义好了的枚举类型:

1719b7bb6067e544842d3953e8e46e46.png

caption对应的名称就是保存代码的txt文件:

227d361d0db88f18ef0402d02cba8540.png

这里不使用遍历获取文件的目的是,菜单的顺序用习惯了还是不喜欢变动的,如果遍历获取文件,默认是按照字母排序的,可能在更新的时候有变动。

faceID是控件前面的小图标,这个其实无所谓,有兴趣可以写个简单的代码,在菜单上添加控件,设置不同的faceID看看:

Sub TestExcelCMDB()    Dim cmdb As CommandBarButton        Application.CommandBars("Worksheet Menu Bar").Reset       Dim i As Long    For i = 1 To 200        Set cmdb = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlButton, Temporary:=True)        cmdb.FaceId = i    NextEnd Sub

c117a7fe9bb2a44835c389c08b32c2b2.png

endflag就是为了标识msoControlPopup的结束。

基本上前期的一些基础就这些了,这里主要做的就是维护好CommandBarDir.txt文件。

3eb8277f2ee449787636a6a2813284b0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值