AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI

Você está em: PrincipalArtigosSérie "Como Fazer": Menus no Excel › Lições : 06
Quer receber novidades e e-books gratuitos?
« Anterior Δ Página principal ¤ Índice Próxima »
Criando menus, barras de comando e botões personalizados no Excel usando VBA
Autor: Robert Friedrick Martim
Lição 005 - Criando e Executando Ações nos Menus

Quando criamos menus queremos executar algo. Não adianta criar algo lindo e ele não funciona. Como os botões temos duas maneiras para executar um comando no botão:

  • OnAction
  • Execute

A diferença entre OnAction e Execute é que OnAction executa um comando que nós mesmos criamos ao passo que Execute executa um comando interno do Excel como Imprimir, por exemplo. Porém, o Execute é acionado quando criamos nosso botão, portanto, iremos utilizar o ID do botão interno para executar o comando.

Primeiramente, vamos criar o código que montará nosso menu:

Sub executandoMenus()

   Dim mnu     As CommandBarPopup

   Dim btn     As CommandBarButton

   

   On Error Resume Next

   CommandBars(1).Controls("Executar comandos").Delete

   Set mnu = CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=1)

    mnu.Caption = "Executar comandos"

   Set btn = mnu.Controls.Add(Type:=msoControlButton)

    With btn

     .Caption = "Exemplo OnAction"

     .FaceId = 400

     'Mensagem refere-se a macro a ser executada

     .OnAction = "Mensagem"

    End With

 

   'Defini o ID do botão como sendo 901 (Filtro Avançado).

   'Quando o botão for clicado o Excel carrega a

   'caixa do Filtro Avançado

   Set btn = mnu.Controls.Add(Type:=msoControlButton, ID:=901)

    With btn

     .Caption = "Exemplo Execute"

     .FaceId = 600

     'Este método está comentado pois utilizaremos

     'o ID 901 para executá-lo

     '.Execute

    End With

End Sub

 


O nosso menu tem o seguinte aspecto:

Figura 0‑12

Os faceID’s ficam a critério do leitor. Mais adiante veremos como personalizar as carinhas dos botões de menu. Observe que no OnAction nós colocamos o nome da macro a ser executada. Porém, no caso do Execute estaremos utilizando o número referente ao comando que desejamos executar para fazer o que desejamos. Como o OnAction necessita de uma macro precisamos acrescentá-la ao nosso projeto. Como exemplo, podemos utilizar a seguinte sub-rotina:

Sub Mensagem()

   MsgBox "Esta é uma mensagem de teste gerada em: " & Date

End Sub

Quando clicamos no primeiro botão ele executa o OnAction e a mensagem é passada para o usuário:

Figura 0‑13

Já no segundo botão estamos executando um comando interno do Excel com um ID igual a 901:

Figura 0‑14

Uma vez que definimos qual é o ID do comando o método Execute torna-se redundante, pois ao clicarmos no botão o comando será executado. Porém, há situações onde queremos que o comando seja executado quando o código é rodado.

Os comandos acima são acessados através de um “clique”, porém, podemos também acrescentar um combinação de teclas para criar um atalho para o nosso botão.

Atalhos são acessados diretamente do teclado e facilitam a execução de comando, pois não precisamos recorrer ao mouse toda vez que desejamos executar tal comando.

O processo é o mesmo que o OnAction. Na verdade, o OnAction é que determina a macro a ser executada. O que precisamos fazer é utilizar a propriedade ShortCutText para criar o Atalho e defini-lo no código

O procedimento a seguir descreve como adicionar um atalho de teclado ao menu. Primeiro, precisamos criar o menu. Neste exemplo, anexaremos o nosso botão ao menu Arquivo:

Sub mnuAtalho()

   Dim mnu As CommandBarPopup

   Dim btn As CommandBarButton

 

   On Error Resume Next

   'apaga o menu caso ele já exista

   Call deletarMenu

   

   Set mnu = CommandBars(1).FindControl(Id:=30002)

   Set btn = mnu.Controls.Add(Type:=msoControlButton, before:=1)

    With btn

     .Caption = "&Abrir texto" 'O ampersand (&) indica o atalho

     .ShortcutText = "Ctrl+Shift+A"

     .OnAction = "abrirTxt"

    End With

   

    'Adiciona o atalho a macro que desejamos rodar

    Application.MacroOptions Macro:="abrirTxt", _

      HasShortcutKey:=True, _

      ShortcutKey:="A"    'É a letra que comanda o atalho.

                          'Neste caso a letra "A"

End Sub

 A compilação acima e composta de duas partes. A primeira monta o menu que desejamos e a segunda cria o Atalho (Shortcut) que desejamos. É importante lembrar que certos atalhos podem entrar em conflito com algum atalho do sistema. No caso anterior, se o atalho for definido como Ctrl+Alt+A ao pressionar esta combinação de teclas obtemos “á” ao invés da execução do comando.

Observe também que, diferentemente do que foi feito antes, para excluir o menu anterior chamamos uma sub-rotina diferentes. Esta forma de construção é melhor do que a utilizada anteriormente, pois possibilita a chamada da exclusão sem construir um novo menu. Nos exemplos que o leitor encontrará neste módulo a utilização de ambos os métodos é feita propositalmente para forçar o aprendizado.

Voltando da digressão, ao pressionarmos Ctrl+Shift+A a caixa de diálogo abrir é mostrada e filtrada para mostrar somente arquivos texto:

Figura 0‑15

A criação de atalhos para menu deve ser pensada de antemão para que os atalhos tenham significado é sejam intuitivos.

« Anterior Δ Página principal ¤ Índice Próxima »
Quer receber novidades e e-books gratuitos?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI

(Online, Vitalício, Prático e Atualizado)!

  • Chega de ser Ignorado pelo Mercado!

  • A vida não vai Melhorar Sozinha!

  • Quem domina infraestrutura, domina o Mercado.

  • Com esta Formação você vai Dominar o Conhecimento e torne-se o Profissional que as Empresas estão Buscando, "desesperadamente", mas não estão encontrando.

NÃO PROCURE VAGAS, SEJA PROCURADO!

 

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

Para Todos os Detalhes, Acesse:

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

https://juliobattisti.com.br/curso-infra-ti.asp

 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2026 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI