zoukankan      html  css  js  c++  java
  • 【转】Custom Menu Items Created on the fly With Excel VBA

    Sub createMenu()
        Dim cMenu1 As CommandBarControl
        Dim cbMainMenuBar As CommandBar
        'Dim iHelpMenu As Integer
        Dim cbcCutomMenu As CommandBarControl
        '(1)Delete any existing one. We must use On Error Resume next in case it does not exist.
        On Error Resume Next
        Application.CommandBars("Worksheet Menu Bar").Controls("&New Menu").Delete
        On Error GoTo 0
        '(2)Set a CommandBar variable to Worksheet menu bar
        Set cbMainMenuBar = Application.CommandBars("Worksheet Menu Bar")
        '(3)Return the Index number of the Help menu. We can then use this to place a custom menu before.
        'iHelpMenu = cbMainMenuBar.Controls("Help").Index
        '(4)Add a Control to the "Worksheet Menu Bar" before Help.
        'Set a CommandBarControl variable to it
        Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup) ', Before:=iHelpMenu
        '(5)Give the control a caption
        cbcCutomMenu.Caption = "&New Menu"
        '(6)Working with our new Control, add a sub control and give it a Caption and tell it which macro to run (OnAction).
        With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
            .Caption = "Menu 1"
            .OnAction = "MyMacro1"
        End With
        '(6a)Add another sub control give it a Caption and tell it which macro to run (OnAction)
        With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
            .Caption = "Menu 2"
            .OnAction = "MyMacro2"
        End With
        'Repeat step "6a" for each menu item you want to add.
        'Add another menu that will lead off to another menu
        'Set a CommandBarControl variable to it
        Set cbcCutomMenu = cbcCutomMenu.Controls.Add(Type:=msoControlPopup)
        ' Give the control a caption
        cbcCutomMenu.Caption = "Ne&xt Menu"
        'Add a contol to the sub menu, just created above
        With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
                    .Caption = "&Charts"
                    .FaceId = 420
                    .OnAction = "MyMacro2"
        End With
    End Sub

    Sub delMenu()
        On Error Resume Next
        Application.CommandBars("Worksheet Menu Bar").Controls("&New Menu").Delete
        On Error GoTo 0
    End Sub

    Sub MyMacro1()
        MsgBox "123木头人", vbInformation, "测试"
    End Sub

    Sub MyMacro2()
        MsgBox "321木头人", vbInformation, "测试"

    End Sub 

    This workBook 

    Private Sub Workbook_Activate()
        Run "createMenu"
    End Sub
    Private Sub Workbook_Deactivate()
        Run "delMenu"

    End Sub 

  • 相关阅读:
    小程序开发过程中遇到的问题
    Windows 常用命令与快捷键
    前端开发中遇到的问题记录
    判断当前页面是否在微信中
    js学习导图
    一篇不错的 文章
    flex 布局
    微信客户端sdk使用前的 授权签名
    elementUI+vue-cli el-table=》excel
    rem适配
  • 原文地址:https://www.cnblogs.com/abinxm/p/2277659.html
Copyright © 2011-2022 走看看