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.
Abraço
Marcos Rieper