Aplicar filtro automático em lista com VBA Excel

Aplicar filtro automático em lista com VBA Excel

Objetivo: Aplicar filtro automático em uma lista de dados a partir de um resumo Excel.

Objetivo do artigo

Neste artigo é demonstrado um pouco da forma como podemos interagir com a planilha através dos Eventos criados em VBA.

A implementação feita nesta planilha permite que ao dar um duplo clique sobre o nome do vendedor a lista Excel abaixo seja automaticamente filtrada.

E da mesma forma ao clicar na palavra “Limpar” o código Excel VBA faz automaticamente a limpeza dos filtros que haviam sido aplicados.

Criando a lista

A primeira coisa que deve-se fazer é a lista Excel, para isso basta dispor os dados em suas devidas colunas, no caso usamos, dia, mês, ano, valor e vendedor, sendo que o filtro será aplicado automaticamente conforme o vendedor.

Os dados não devem ser nunca misturados com outros, nestas colunas a partir dos seus cabeçalhos somente deverão existir os tipos de dados que se dispões no cabeçalho da tabela Excel.

Criando o resumo

O resumo foi criado colocando o cabeçalho vendedor e total. No campo de vendedor foram dispostos os nomes dos vendedores e no campo Total foi colocada a fórmula Excel Somase: =SOMASE(E8:$E$52400;D2;D8:$D$52400).

Esta fórmula realiza a soma das vendas de cada vendedor da lista, ignorando o filtro. Você pode ver mais em: http://guiadoexcel.com.br/funcao-somases-varias-condicoes-para-soma, inclusive com uma vídeo-aula.

Além disso foi escrito na célula B2 a palavra Limpar, sem nada a acrescentar por enquanto.

Aplicar o filtro automático em lista com VBA Excel

Agora para aplicar o filtro automaticamene foi adicionado o seguinte código VBA ao evento de duplo clique da planilha.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If (Target.Column = 4 And Target.Row >= 2 And Target.Row <= 5) And Target.Value  "" Then
        ActiveSheet.Range("$A$1:$E$518").AutoFilter Field:=5, Criteria1:=Target.Value, _
            Operator:=xlAnd
    Else
        If Target.Address = "$B$1" Then
            Application.EnableEvents = False
            Range("D7").Select
            Selection.AutoFilter
            Selection.AutoFilter
            Application.EnableEvents = True
        End If
    End If
End Sub

Este código realiza a aplicação do filtro se a coluna for a D e se a linha estiver entre a segunda e a quinta linha e se houver valor para aplicar o filtro. Deste modo só serão filtrados os dados na lista Excel se for clicado nesta coluna.

Logo abaixo da primeira verificação é aplicado o filtro utilizando o conteúdo da célula que foi clicada diretamente sobre a coluna E que é a coluna de vendedor.

Caso a célula que foi clicada não atenda os primeiros critérios o VBA realiza uma segunda verificação, para identificar se foi clicado na célula B1, e neste caso realizar a limpeza do filtro da lista de dados.

Conclusão filtro automático em lista com VBA Excel

Trabalhar com eventos no Excel VBA permite que tenhamos uma maior iteração com a planilha possibilitando inúmeras variações que podem agilizar a vida do usuário.

Download lista Excel VBA

Você pode fazer o download desta planilha e vê-la funcionando na prática clicando no botão abaixo.

Baixe a planilha

Abraço

Marcos Rieper