Neste artigo você aprenderá como ocultar a segmentação de dados no Excel e exibir novamente, também como ocultar e exibir utilizando VBA no Excel.
Esta técnica é especialmente interessante quando você precisa exibir uma segmentação de dados apenas em um determinado momento.
Pode ser aplicada em tabelas e tabelas dinâmicas, sendo especialmente útil para para dashboards e situações que você tem pouco espaço disponível ou tem um filtro que ocupa muito espaço.
Como Exibir ou Ocultar Segmentação de Dados no Excel
Você pode exibir objetos que “flutuam” sobre a planilha, como imagens e propriamente as segmentações de dados.
Você pode realizar este procedimento manualmente no Excel por meio do Painel de Seleção.
Ele pode ser acessado pela guia Página Inicial -> Localizar e Selecionar -> Painel de Seleção…
Ao clicar sobre o painel de seleção serão exibidos todos os objetos presentes na planilha.
Os objetos são por exemplo imagens, segmentações de dados, objetos de VBA entre outros.
Ele é muito semelhante ao painel de seleção que temos em programas gráficos como por exemplo o Photoshop.
Ao clicar sobre o ícone de olho ele irá trocar entre exibido ou não o objeto selecionado.
Todos os objetos da planilha estarão presentes neste painel de seleção.
Desta forma você poderá manualmente exibir ou ocultar a segmentação de dados no Excel por exemplo.
Ao realizar esta ação, o que estava filtrado continuará filtrado, ele apenas oculta o objeto.
Agora veja como alterar para que seja automaticamente oculta e reexibida a segmentação de dados utilizando VBA no Excel.
Ocultar e Exibir Segmentação de Dados no Excel VBA
Nós temos a seguinte tabela de bastecimentos.
Gostaríamos de incluir filtros visuais com segmentação de dados para o filtro de Placa, Combustível e
Para isso incluímos um ícone ao topo de cada uma destas colunas.
Para selecionar um ícone, pode usar a ferramenta do Excel em Inserir->Ícones e digitar o ícone que deseja, no nosso exemplo adicionamos o ícone Filtro.
Colocamos ele ao topo da coluna, ao lado do filtro existente.
O objetivo é que ao clicar sobre o ícone seja exibido ou oculta a segmentação.
Inserimos então a segmentação de dados clicando em Inserir -> Segmentação de Dados.
Selecionamos então as três segmentações de dados que citamos e posicionamos sobre a tabela, ficando conforme na imagem.
Posicione os demais conforme acima, veja também o ícone ao topo.
Como sugestão, após redimensioná-la e ajusta-la, clique em cada segmentação de dados com o botão direito e selecione a opção Tamanho e Propriedades e altere a opção em Posição e Layout chamada Desabilitar redimensionamento e movimentação para marcada no slicer.
Isso fará com que o slicer não possa ser redimensionado ou arrastado sem querer durante a ação de filtragem.
A estrutura agora está pronta, iremos agora trabalhar na questão da automação de exibir e ocultar o slicer por VBA.
Inicialmente Habilite a guia Desenvolvedor se estiver desabilitada.
Em seguida, pressione o atalho ALT+F11 ou clique em Desenvolvedor -> Visual Basic.
Clique no menu em Inserir -> Módulo e no módulo criado cole o seguinte código VBA.
Global gflMotorista As Boolean
Global gflFornecedor As Boolean
Global gflPlaca As Boolean
Global gflDashboard As Boolean
Public Sub lsFiltroMotorista()
If gflMotorista = True Then
ActiveSheet.Shapes.Range(Array("Motorista")).Visible = msoFalse
gflMotorista = False
Else
ActiveSheet.Shapes.Range(Array("Motorista")).Visible = msoTrue
gflMotorista = True
End If
End Sub
Public Sub lsFiltroPlaca()
If gflPlaca = True Then
ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoFalse
gflPlaca = False
Else
ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoTrue
gflPlaca = True
End If
End Sub
Public Sub lsFiltroFornecedor()
If gflFornecedor = True Then
ActiveSheet.Shapes.Range(Array("Fornecedor")).Visible = msoFalse
gflFornecedor = False
Else
ActiveSheet.Shapes.Range(Array("Fornecedor")).Visible = msoTrue
gflFornecedor = True
End If
End Sub
Public Sub lsFiltroDashboard()
If gflDashboard = True Then
ActiveSheet.Shapes.Range(Array("Retângulo: Único Canto Arredondado 1")). _
Visible = msoFalse
ActiveSheet.Shapes.Range(Array("Data (Mês) 1")).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("Combustível 1")).Visible = msoFalse
ActiveSheet.Shapes.Range(Array("Placa 2")).Visible = msoFalse
gflDashboard = False
Else
ActiveSheet.Shapes.Range(Array("Placa 2")).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("Combustível 1")).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("Data (Mês) 1")).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("Retângulo: Único Canto Arredondado 1")). _
Visible = msoTrue
gflDashboard = True
End If
End Sub
O código acima funciona da seguinte forma:
No início do código criamos variáveis globais que iniciam com gfl, chamamos assim para identificar que são G-globais e fl-flags, ou seja booleanas que irão receber apenas Verdadeiro e Falso.
O objetivo delas é armazenar a situação dos objetos, se estão visíveis ou ocultos, tendo uma variável para cada segmentação de dados.
Então temos vários procedimentos como o lsFiltroMotorista() que irá filtrar somente a segmentação de motorista, contendo o seguinte código:
If gflPlaca = True Then
ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoFalse
gflPlaca = False
Else
ActiveSheet.Shapes.Range(Array("Placa 1")).Visible = msoTrue
gflPlaca = True
End If
Veja que ele verifica, SE gflPlaca = Verdadeiro, então, exibir a segmentação Placa 1 e mudar a gflPlaca para Falso, SENÃO ocultar a segmentação Placa 1 e mudar a variável gflPlaca para Verdadeiro.
Desta forma temos então a mudança de estado ocultando a segmentação de dados ou imagem e também mudando a variável que a controla e o resultado é conforme na imagem abaixo.
Este mesmo conceito também pode ser aplicado em imagens e pode ser muito útil em dashboards no Excel conforme pode perceber no exemplo abaixo.
No exemplo acima, nós exibimos e ocultamos todos os slicers ao mesmo tempo, bem como a imagem que está por trás dos mesmos, e usando o mesmo conceito de código usando a variável global, temos a situação atual da objeto, visível ou não e o alteramos.
Download da Exemplo Ocultar e Reexibir Segmentação de Dados
Realize o download da planilha deste artigo no botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.
Baixe a planilha