【VBA】向Excel中添加菜单

Excel临时菜单添加代码介绍
博客介绍了向Excel菜单栏添加临时菜单的代码。使用目的是将后台功能以菜单形式供用户使用,使用方法是直接调用过程名或在Workbooks_Open中调用。同时给出注意事项,如先打开程序再操作表、菜单为临时不会损坏Excel、不同进程菜单不共享等。

以下代码用于向Excel菜单栏中添加菜单。是临时菜单,不是永久菜单。

使用目的:

将后台代码实现的功能以菜单的形式显示出来,供用户使用。

使用方法:

直接调用过程名即可,也可在Workbooks_Open中调用可实现打开Excel即加载,易用。

注意事项:

(1)先点击按钮生成菜单,然后再打开Excel时,此时新Excel中会自动加载同样的菜单。所以,我们让用户先打开我们的程序,然后再打开她要操作的表,然后再她的表上点击按钮即可。
(2)此菜单是临时菜单不会永久停留在Excel中,当当前Excel进程完全结束后,就会消失。所以一般不用担心,会对Excel程序造成损坏什么的。
(3)当你的两个Excel不是一个进程时,那么菜单是不会在另一个上显示的。比如说,用了两次CreateObject创建的Excel就不属于同一个进程,一个显示菜单后,另一个,即使是后创建打开的,也是不显示菜单的。(一般不用考虑。出问题时能想到可能有此问题即可。)

Sub Add_Click()
    
    Dim mm(10)
    Dim nn(10)
    
    For Each Menu In Application.CommandBars
            '防止要添加的菜单组已经存在而出错。
            If InStr(Menu.Name, "Menu1") > 0 Then
              Application.CommandBars(Menu.Name).Delete
            End If
    Next
    'DisplayName是菜单显示的名称,SUBNAME是后台代码的过程名。
    '第1个菜单
    mm(1) = "DisplayName1"
    mm(2) = "SUBNAME1"
    '第2个菜单
    nn(1) = "DisplayName2"
    nn(2) = "SUBNAME2"
    '...加多少个都行。
    
    Set Menu = Application.CommandBars.Add(Name:="Menu1", Position:=msoBarTop, Temporary:=True)
    '新添加的菜单可见
    Menu.Visible = True
    For N = 1 To 2  '此处根据要添加的菜单数量变更即可。
            Set mn = Menu.Controls.Add(Type:=1)
            mn.Caption = nn(N)
            mn.Visible = True
            mn.OnAction = mm(N)
            mn.FaceId = 1265  '这个数字是菜单的图案,挑喜欢的就好。
            mn.Style = 3
    Next
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值