MyVBA加载宏——添加自定义菜单01

2020-07-28 14:23:57 浏览数 (1)

前面创建的MyVBA加载宏,设置成了启动就打开的加载宏,只有一个打开宏文件的功能:

在这个自启动的加载宏上,给它在VBA编辑器里,添加一个菜单栏:

主要功能就是收集一些常用的代码,方便快速的插入到VBA编辑器中。

这些常用的代码主要是一些一般不构成单独功能的代码,如果是构成单独功能的代码,个人习惯存储在文件中,就像前面提到过的vbapFunc.xlam中ScanDir之类的,是通过工具-引用,添加引用去使用。

这里添加的代码就是一些小的片段的代码,比如声明一个外部对象字典:

代码语言:javascript复制
    Dim dic As Object
    Set dic = VBA.CreateObject("Scripting.Dictionary")

因为拼写单词有时候可能会写错,通过这种方式就可以避免这个问题。

当然这个也可以根据自己的习惯去添加,目的只是为了方便快速的插入一些经常用到的代码。

我们在VBE菜单——CommandBars对象里,对VBE里的菜单对象已经有了了解,要添加新的菜单,只要去操作CommandBars集合中的第一个对象即可:

代码语言:javascript复制
Sub TestAdd()
    Dim cmd As CommandBarControl
    
    Set cmd = Application.VBE.CommandBars(1).Controls.Add(msoControlPopup)
    cmd.Caption = "测试"
End Sub

这个时候,在菜单栏上就多了一个“测试”的菜单,msoControlPopup表示添加的是一个弹出式的Control,这种弹出式的可以继续在其上面添加CommandBarControl:

代码语言:javascript复制
Sub TestAdd()
    Dim cmd As CommandBarControl
    
    Set cmd = Application.VBE.CommandBars(1).Controls.Add(msoControlPopup)
    cmd.Caption = "测试"
    
    Dim btn As CommandBarButton
    Set btn = cmd.Controls.Add
    btn.Caption = "测试按钮"
End Sub

这样“测试”菜单上就出来了一个按钮了。

删除这个菜单:

代码语言:javascript复制
Sub TestDelete()
    On Error Resume Next
    Application.VBE.CommandBars(1).Controls("测试").Delete
End Sub

如果不存在"测试"这个菜单的时候,会报错,所以添加了一条忽略错误的语句。

0 人点赞