Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Código para filtros

Olá, boa noite pessoal.

Minha dúvida é relacionada a trabalhar com vba de um modo geral quando usamos planilhas que precisam de filtros.

Por exemplo, caso eu queira automatizar uma cópia de dados de uma planilha para outra, mas para isso precise ativar diversas vezes o filtro, existe algum modo de facilitar esse comando do filtro?

Por exemplo: Tenho uma tabela com milhares em uma única coluna, nela centenas de filtros possíveis, esses filtros são enumerados de 0001 até 9999. Sei adicionar um comando para ativar o filtro 0111 por exemplo, mas gostaria de automatizar esse comando, pois montar quase mil comandos de aplicar o filtro fica quase impossível. (após cada aplicação de filtro uso um código simples para copiar os dados)

5 respostas

Oi Gabriel tudo bem?

Teria como colocar o seu arquivo, por gentileza, no dropbox para eu dar uma olhadinha para ver como automatizar isso dá melhor maneira possível.

Olá Andre! Obrigado pela resposta, preparei uma planilha resumida com a mesma situação.

Link: https://www.dropbox.com/sh/sdj5wpoc14p6frc/AACmd4iIuFNx3hfByPz8AJPIa?dl=0

Prontinho:

Sub AutoFiltro()

linha = 2

While Cells(linha, 3) <> ""
    If Cells(linha, 1) <> filtroAnterior Then

        Selection.AutoFilter Field:=1, Criteria1:=Cells(linha, 1)

       'Coloque seu código aqui

    End If

    filtroAnterior = Cells(linha, 1)

linha = linha + 1
Wend
End Sub

Espero ter ajudado!!!

Opa, olá! Ajudou em partes, como são dois arquivos separados como poderia fazer com que o filtro de outra planilha abra no exato mesmo filtro que a primeira?

solução!

Tinha esquecido que eram duas planilhas, faça assim:

Sub AutoFiltro()

linha = 2

While Cells(linha, 1) <> ""
    If Cells(linha, 1) <> filtroAnterior Then

        Windows("Origem_Alura.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:=Cells(linha, 1)
         'Seu código para planilha 1 aqui

        Windows("Origem_Alura2.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:=Cells(linha, 1)
         'Seu código para planilha 2 aqui

    End If

    filtroAnterior = Cells(linha, 1)

linha = linha + 1
Wend
End Sub