Menu Suspenso no Excel – VBA

Objetivo: Demonstrar a criação de um menu suspenso no Excel.

Encontrei no livro VBA e Macros para Microsoft Office Excel 2007 de Bill Jelen e Tracy Syrstad este código que achei interessante e adaptei nesta planilha com comentários relevantes.

Este código executa um menu suspenso quando é acionada uma macro, ocultando todos os menus suspensos do botão direito da planilha e depois adicionando novamente.

Ao abrir a planilha e fechar os menus são “resetados” ou seja, voltam ao seu estado normal, caso contrário todas as opções normais do botão direito do Excel seriam ocultas.

Abaixo o código fonte:

Sub MenuSuspenso()
    Application.CommandBars("Cell").Reset
    
    Dim cbc As CommandBarControl
    
    'Oculta todos os comandos do botão direito
    For Each cbc In Application.CommandBars("cell").Controls
        cbc.Visible = False
    Next cbc
    
    'Adiciona um comando ao menu suspenso
    With Application.CommandBars("Cell").Controls.Add(temporary:=True)
        .Caption = "Minha Macro 1"
        .OnAction = "Test1"
    End With
    
    'Adiciona um comando ao menu suspenso
    With Application.CommandBars("Cell").Controls.Add(temporary:=True)
        .Caption = "Minha Macro 2"
        .OnAction = "Test2"
    End With
    
    'Adiciona um comando ao menu suspenso
    With Application.CommandBars("Cell").Controls.Add(temporary:=True)
        .Caption = "Minha Macro 3"
        .OnAction = "Test3"
    End With
    
    Application.CommandBars("Cell").ShowPopup
End Sub

Sub Test1()
    MsgBox "Essa é a macro Teste1 do menu de evento do clique com o botão direito personalizado do objeto ActiveX..", , "Item de menu ''Minha Macro 1''"
End Sub

Sub Test2()
    MsgBox "Essa é a macro Teste2 do menu de evento do clique com o botão direito personalizado do objeto ActiveX..", , "Item de menu ''Minha Macro 2''"
End Sub

Sub Test3()
    MsgBox "Essa é a macro Teste3 do menu de evento do clique com o botão direito personalizado do objeto ActiveX..", , "Item de menu ''Minha Macro 3''"
End Sub

Abraço

Marcos Rieper