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 : 10
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 009 - Botões Toggle

Botões do tipo toggle são úteis quando desejamos ativar ou desativar algo em nossa pasta. Vamos supor por exemplo que desejamos esconder as guias das planilhas..

O processo é um pouco lento pois precisamos ir até Ferramentas à Opções e depois selecionar a opção que desejamos. Com um botão do tipo toggle podemos fazer exatamente isso facilitando o nosso trabalho enormemente.

No tópico anterior, tivemos que criar uma classe para lidar com os eventos. Aqui, teremos que fazer a mesma coisa. O que acontece é que se mudarmos de uma pasta onde as guias estão escondidas para uma onde elas não estão, sem uma classe para lidar com o evento de mudança de uma pasta para outra o botão toggle não refletirá a mudança e permanecerá “ticado” ou não. A figura abaixo mostra um exemplo de botão toggle:

Figura 0‑26

Novamente, iremos iniciar pela classe que lidará com os seguintes eventos:

  • Ativação da planilha
  • Ativação da pasta
  • Ativação da janela

Como cada planilha dentro de uma pasta pode ter as guias ativas ou não, precisamos ter certeza que quando mudamos de planilha o estado do botão toggle também muda. O mesmo vale para a pasta de trabalho quando uma nova pasta é adicionada, por exemplo.

A ativação da janela é outro evento, pois podemos estar trabalhando em pastas diferentes as quais acessamos conforme desenvolvemos o trabalho. Os eventos aqui são mais fáceis do que os do tópico anterior:

 

Public WithEvents appXL As Application

Private Sub appXL_SheetActivate(ByVal Sh As Object)

    Call mostrarGuias

End Sub

 

Private Sub appXL_WorkbookActivate(ByVal Wb As Workbook)

    Call mostrarGuias

End Sub

 

Private Sub appXL_WindowActivate(ByVal Wb As Workbook, _

     ByVal Wn As Window)

    Call mostrarGuias

End Sub

O primeiro evento diz respeito a ativação da planilha (worksheet). O segundo é o evento da pasta (workbook) e o terceiro é o evento conjunto da janela (window) e da pasta (workbook). Com os eventos definidos, podemos construir o módulo que criará o menu:

 

Dim appExcel As New Classe1

Public Const MNUNOME = "Exemplo Toggle"

 

Sub wsMenus()

 

   Dim mnu     As CommandBarPopup

   Dim btn     As CommandBarButton

 

  

   Set mnu = CommandBars(1).Controls.Add _

     (Type:=msoControlPopup, before:=1)

       mnu.Caption = MNUNOME

   

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

    With btn

        .Caption = "&Mostrar guia"

        .OnAction = "guias"

        .Tag = "ExemploToggle"

    End With

Set appExcel.appXL = Application

End Sub

 

Como pode ser observado a construção do menu é idêntica as anteriores. Precisamos agora construir a macro “guias” que é chamada quando clicamos no botão:

Sub guias()

    If TypeName(ActiveSheet) = "Worksheet" Then

        ActiveWindow.DisplayWorkbookTabs = _

           Not ActiveWindow.DisplayWorkbookTabs

        Call mostrarGuias

    End If

End Sub

Esta sub-rotina checa primeiramente se o tipo é uma planilha. Se sim, checamos o estado das guias. Vamos supor que mostrar a guia (DisplayWorkbookTabs) seja falso (false). No código acima estamos invertendo este valor, pois após o clique o DisplayWorkbookTabs deve assumir o valor verdadeiro. Como não sabemos de antemão qual é o estado das guias, utilizamos o estado atual das guias para definir o novo estado.

A função Not no VBA, assim como na planilha, é utilizada para inverter o valor Boolean de um expressão. Em outras palavras, se o valor é verdadeiro (true) a função Not retorna falso (false) e vice-versa. No próxima sub-rotina, isso deve ficar mais claro.

Resolvida a sub-rotina anterior, chamamos a sub-rotina que mostrará ou esconderá as guias:

Sub mostrarGuias() 

   Dim btn As Object

   Dim btnDropDown As Object

   On Error Resume Next

   Set btn = CommandBars.FindControl _

         (Type:=msoControlButton, Tag:="ExemploToggle")

 

   If Not ActiveWindow.DisplayWorkbookTabs = True Then

     btn.State = msoButtonUp

   Else:

      btn.State = msoButtonDown

   End If

  End Sub

Observe como a construção do Not tem um significado literal: If not true (se não for verdadeiro) Then (então). Em outras palavras, se ActiveWindow.DisplayWorkbookTabs for falso (false), então o estado do botão toggle é msoButtonUp. Por outro lado, se ActiveWindow.DisplayWorkbookTabs for verdadeiro (true) o estado do botão é msoButtonDown. Esta mesma construção poderia ter sido:

If ActiveWindow.DisplayWorkbookTabs = False Then

     btn.State = msoButtonUp

   ElseIf ActiveWindow.DisplayWorkbookTabs = True

      btn.State = msoButtonDown

End If


Porém, com a segunda opção acrescentamos linhas extras de código desnecessárias. O trabalho final para o botão toggle:

Figura 0-3

« 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