Ocultar Segmentação de Dados no Excel e Reexibir VBA

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…

ocultar segmentação de dados no excel

Ao clicar sobre o painel de seleção serão exibidos todos os objetos presentes na planilha.

ocultar segmentação de dados no excel 2

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

ocultar segmentação de dados no excel 3

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.

ocultar segmentação de dados no excel 4

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.

ocultar segmentação de dados no excel 5

Selecionamos então as três segmentações de dados que citamos e posicionamos sobre a tabela, ficando conforme na imagem.

ocultar segmentação de dados no excel 6

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

Curso Excel Completo - Do Básico ao VBA

Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo:


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel