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 : 03
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 002 - Como menus e barras de comando são criadas no Excel

Menus e barras de comando são objetos e como tais possuem métodos e propriedades. Para se criar este tipo de objeto precisamos colocar o código em um módulo. Para inserir um módulo de programação precisamos estar na área de edição de código conhecida como VBE (Visual Basic Editor). Para acessar esta área pressione Alt+F11. Quando o VBE for aberto clique em Inserir --> Modulo para inserir um módulo VBA.

No módulo, precisamos definir a sub-rotina que conterá o código que criará nossos menus. A figura abaixo mostra a abertura e fechamento de uma sub-rotina:

Figura 0‑2

Qualquer coisa escrita em visual basic em Sub-End Sub será executada pelo programa.

Como foi dito, menus e barras de comando são objetos. Quando criamos nossos códigos é boa prática definir a dimensão (Dim) destes objetos ou variáveis. Por exemplo:

Sub criandoMenus()

   Dim cmdBar   As Object

   Dim mnu      As Object

End Sub

 

Quando criamos estes objetos, precisamos dar um “set” para que o programa reconheça o tipo de objeto. Por exemplo, se pergunte: o que é “Object”? “Object” apenas não diz nada sobre o que o objeto é ou faz. O Exemplo abaixo mostra como instruir o programa a reconhecer o objeto:

Sub criandoMenus()

   Dim cmdBar   As Object

   Dim mnu      As Object

 

   Set cmdBar = CommandBars.Add(Name:="Criando Menus")

End Sub

Neste exemplo, estamos instruindo o VBA a acrescentar um objeto chamado cmdBar à coleção de barras de comando do aplicativo. O nome desta nova barra de comando é “Criando Menus”. Ao rodarmos o código acima, podemos verificar que o objeto é realmente adicionado à coleção de barras de comando indo até Ferramentas --> Personalizar. A figura abaixo mostra esta nova barra na coleção:

Figura 0‑3

Para que esta barra de comando fique visível, precisamos selecioná-las na caixa de barras de comando. Uma alternativa é incluir no código uma linha que faça isso:

Sub criandoMenus()

   Dim cmdBar   As Object

   Dim mnu      As Object

 

   Set cmdBar = CommandBars.Add(Name:="Criando Menus")

   cmdBar.Visible = True

End Sub

Ao executarmos o código, a barra é apresentada na tela:

Figura 0‑4

Porém, como vimos anteriormente, a barra de comando pode estar em qualquer posição em nossa área de trabalho. O VBA nos permite posicionar a barra nas “cinco” cantos da área de trabalho. Estas posições são:

  • msoBarFloating (barra flutuante na tela)
  • msoBarTop (barra é colocada no topo)
  • msoBarLeft (barra é colocada no canto esquerdo)
  • msoBarRight (barra é colocada no canto direito)
  • msoBarBottom (barra é colocada na parte inferior)

Para posicionar a nossa barra de comando utilizando Position:=nomeDaPosição (conforme a lista anterior). O código revisto fica:

Sub criandoMenus()

   Dim cmdBar   As Object

   Dim mnu      As Object

 

   Set cmdBar = CommandBars.Add(Name:="Criando Menus", _

      Position:=msoBarFloating)

   cmdBar.Visible = True

End Sub

A barra de comando é o objeto que recebe os menus (msoControlPopUp) e botões (como os botões que possuem ícones de salvar, abrir, etc.)

O objeto mnu criado anteriormente não diz nada sobre o objeto e precisamos defini-lo como fizemos com o cmdBar. A lógica de inserção é a mesma que a anterior, isto é, como inserimos a barra de comando a coleção de barras de comando do Excel, agora, vamos adicionar um menu a esta barra de comando:

Sub criandoMenus()

   Dim cmdBar   As Object

   Dim mnu      As Object

 

   Set cmdBar = CommandBars.Add(Name:="Criando Menus", _

      Position:=msoBarFloating)

   Set mnu = cmdBar.Controls.Add(Type:=msoControlPopUp)

    With mnu

     .Caption = "meu menu"

     .Width = 200

    End With

   cmdBar.Visible = True

End Sub

Com isso criamos nossa barra de comando contendo um menu:

Figura 0‑5

O bloco With-End With nos permite definir as propriedades e métodos do objeto mnu sem precisar repetir o seu nome (mnu) para cada propriedade ou método que definimos.

Por analogia, podemos criar outros menus, precisando apenas defini-los no código. Para cada mnu que entrará no código. Por exemplo:

Sub criandoMenus()

'... Código anterior suprimido para este exemplo

   Set mnu = cmdBar.Controls.Add(Type:=msoControlPopUp)

     With mnu

       .Caption = "meu menu"

     End With

   Set mnu = cmdBar.Controls.Add(Type:=msoControlPopUp)

     With mnu

       .Caption = "Seu menu"

     End With

End Sub

 

Figura 0‑6

Porém, o controle msoControlPopUp apenas abre o “popup”. Ele é incapaz de executar instruções. Para se executar instruções precisamos adicionar o controle msoControlButton. Este controle pode ser inserido na barra ao no menu.

Sub criandoMenus()

'... Código anterior suprimido para este exemplo

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

     mnu.FaceId = 326

 

Set mnu = cmdBar.Controls.Add(Type:=msoControlPopUp)        

      mnu.Caption = "meu menu"

 

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

     mnu.FaceId = 926

 

Set mnu = cmdBar.Controls.Add(Type:=msoControlPopUp)

    mnu.Caption = "Seu menu"

End Sub

Ao executarmos o código obtemos o seguinte resultado:

Figura 2‑6

Observe que não é preciso definir um objeto para o botão. Podemos utilizar o objeto mnu para fazer isso (poderíamos até usar o cmdBar) .

Os leitores acostumados com VBA devem ter notado que ao inserir o ponto (.) após o nome do objeto a caixa contendo a lista de propriedades e métodos não é exibida. Mas quando tentamos forçar a exibição da caixa o VBE não aceita. Este tipo de problema diz respeito ao objeto em si.

Lembra quando perguntamos que objeto era esse? Pois bem, quando definimos a dimensão do objeto como sendo “Object” ele pode ser qualquer coisa. Em outras palavras, a caixa de propriedades e métodos não fica disponível porque o VBA não reconhece o objeto. A solução para o nosso problema é bem simples: basta dimensionar o objeto corretamente.

Quando criamos nossa barra de comando, nós utilizamos os seguintes objetos:

  • CommandBar (para o cmdbar)
  • CommandBarPopup (para o msoControlPopUp)
  • CommandBarButton (para o msoControlButton)

Embora tenhamos utilizados estes objetos, nós não os dimensionamos explicitamente como sendo este objeto. Quando dimensionamos o objeto é importante dimensioná-lo com a classe correta. Embora isso não afete o resultado, ele certamente afeta o desempenho e a nossa produtividade. Nos exemplos anteriores fica difícil saber qual propriedade ou método a ser utilizado. A menos que você os conheça o seu trabalho será muito menos produtivo.

Embora seja possível, esta prática não é aconselhável. Mais adiante veremos o porquê.

« 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