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 : 08
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 007 - Criando menus de atalho

Outro tipo de menu interessante é o menu de atalho. Este menu é acessado quando clicamos com o botão direito do mouse sobre a planilha ou qualquer outro local de nossa área de trabalho como mostra figura abaixo:

Figura 7‑1

Nesta parte estaremos vendo exatamente este tipo de menu.

Assim como os menus anteriores, podemos acrescentar o nosso botão ao menu de atalho. Contudo, podemos também criar os nossos menus de atalho que respondem quando clicamos em determinados locais da área de trabalho.

A lógica para criação deste tipo de menu é a mesma que a anterior.

O que precisamos definir claramente é o evento BeforeRightClick na planilha onde ele ocorrerá. Além disso iremos definir a criação do atalho assim que a planilha abrir e a destruição do menu quando a planilha fechar. Esta é uma boa prática que estaremos desenvolvendo agora, pois não é uma boa idéia deixar barras de comando ou menus sem suas referências.

Primeiro, vamos criar o menu. Para isso utilizaremos dois módulo: um que conterá o código para a criação dos menus e outro que conterá as ações (OnAction) efetuadas pelo menu .

O menu que estaremos criando conterá as seguintes opções:

  • Negrito (transforma a seleção em negrito)
  • Itálico (transforma a seleção em itálico)
  • Sublinhado  (transforma a seleção em sublinhado)
  • Sobre  (mostra informações sobre este aplicativo)
  • Ajuda (mostra a ajuda para do Excel XP)

O código de ser escrito em um módulo para menu somente (neste exemplo, o nome do módulo é modMenu). O código construído com as opções acima fica:

 

'constante do nome do menu

Public Const BARRA As String = "mnuAtalho"

Sub mnuAtalho()

    Dim cmdBar  As CommandBar

    Dim mnu     As CommandBarButton

   

    delAtalho 'Apaga a barra de comando anterior caso ela exista

    Set cmdBar = CommandBars.Add _

      (Name:=BARRA, Position:=msoBarPopup, Temporary:=True)

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

    With mnu

        .Caption = "Negrito"

        .OnAction = "negrito"

        .FaceId = 113

    End With

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

    With mnu

        .Caption = "Itálico"

        .OnAction = "itálico"

        .FaceId = 114

    End With

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

    With mnu

        .Caption = "Sublinhado"

        .OnAction = "sublinhado"

        .FaceId = 115

    End With

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

    With mnu

        .Caption = "&Sobre..."

        .OnAction = "sobre"

        .FaceId = 326

        .BeginGroup = True

    End With

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

    With mnu

        .Caption = "&Ajuda"

        .OnAction = "ajuda"

        .FaceId = 984

        .BeginGroup = True

    End With

End Sub

Uma vez compilado, o menu terá o seguinte formato:

Figura 0‑21

Porém, ainda não estamos prontos para a compilação. Precisamos definir os OnAction para cada botão em nosso menu e os eventos que irão dispara o menu acima.

No mesmo módulo acrescente o código para deleção do menu:

Sub delAtalho()

    'Apaga a barra de comando anterior caso ela exista

    On Error Resume Next

    CommandBars(BARRA).Delete

End Sub

Crie um módulo chamado modOnAction onde entraremos os seguintes códigos:

Sub negrito()

    'Modifica a seleção para negrito

    Selection.Font.Bold = True

End Sub

Sub itálico()

    'Modifica a seleção para itálico

    Selection.Font.Italic = True

End Sub

Sub sublinhado()

    'Modifica a seleção para sublinhado

    Selection.Font.Underline = True

End Sub

 

Sub sobre()

   msg = "Este exemplo foi criado por Robert F Martim como parte " _

        & "do módulo sobre criação "

   msg = msg & "de menus de atalho utilizando VBA no " _

        & "Excel." & vbCr & vbCr

   msg = msg & "Para maiores informações visite: " _

        & "www.msofficegurus.com" & vbCr & vbCr

   msg = msg & "Para falar com o autor escreva " _

        & "para: rm@msofficegurus.com"

 

   MsgBox msg, vbInformation, "Sobre este módulo..."

End Sub

 

Sub ajuda()

   'Mostra o Help do Excel XP

   'Caso o seu Excel seja o 2000, mude para XLMAIN9

   'Se for o 2003, mude para XLMAIN11

   Application.Help "XLMAIN10.CHM"

End Sub

Como o menu é disparado quando clicamos com o botão direito do mouse, precisamos criar este evento. Nesta parte estamos interessados no RightClick na Plan1. Abra o VBE da Plan1 e entre o seguinte código:

Private Sub Worksheet_BeforeRightClick(ByVal Target As _

   Excel.Range, Cancel As Boolean)

    If Union(Target.Range("A1"), Range("A1:O32")).Address =  _

       Range("A1:O32").Address Then

          CommandBars(BARRA).ShowPopup

        Cancel = True 'Cancela o Popup padrão do Excel

    End If

End Sub

Está é a parte final de nosso código. O código para criação e deleção do menu quando a planilha é aberta ou fechada encontra-se na planilha que acompanha este tópico e não será repetido abaixo.

Ao clicar e executar o menu:

Figura 0‑22

A nossa próxima parada é adicionar o nosso botão a um dos menus de atalho padrão do Excel. Para fazermos isso, precisamos saber o índice ou nome do menu ao qual acrescentaremos. Com este módulo há um aplicativo que cria uma lista dos nomes destes menus para sua futura referência.

A barra de comando que nos interessa é a Cell cujo índice é 29 . Para adicionar um botão a esta barra de comando, procedemos da mesma forma quando adicionamos o botão ao menu principal do Excel:

Sub mnuAtalho()

   Dim mnu As CommandBarButton

 

   delAtalho

   Set mnu = CommandBars(29).Controls.Add(Type:=msoControlButton, _

    before:=1)

   With mnu

    .Caption = "Sobre..."

    .FaceId = 326

    .OnAction = "sobre"

   End With

End Sub

No código anterior, chamamos a sub-rotina delAtalho. Diferentemente dos exemplos anteriores não iremos utilizar o método Delete, mas o método Reset:

Sub delAtalho()

   On Error Resume Next

   CommandBars(29).Reset

End Sub

Após a compilação do menu e o clique “direito” sobre qualquer área da planilha:

Figura 0‑23

Não é necessária a criação de dois módulos para fazer isso.Os módulos criados aqui são para melhor organização do material.

No Excel 2002, o índice é 28. Você pode utilizar o nome da barra de comando. Neste caso, use o nome “Cell”

« 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