Página 1 de 1

Memória Filtro Avanlado - VBA

Enviado: 07 Ago 2017 às 15:39
por ersilva88
Boa tarde,

Estou procurando aprender de VBA de forma auto-didata, e tento utilizar a gravação de macros, para me auxiliar na sintaxe e ir incluindo variáveis, algumas linhas de código para chegar no resultado que espero!

Criei uma macro (Através de gravação!), para utilizar a função do filtro avançado e ela funcionou corretamente na primeira vez que é executada! Porém, quando tento utilizar da segunda vez em diante, o filtro não obedece os novos dados que coloco nos filtros.

Acredito que o VBA, guarda alguma coisa na memória! Eu tentei pesquisar algum comando para limpar isso de alguma forma e não consegui!

Segue a linha de código:

Sub Filtrar_DE()
' Filtrar_DE Macro
' Filtrar_DE

Range("Consolidado_new!_FilterDatabase").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("DE!Criteria"), CopyToRange:=Range("A5"), Unique:=False
End Sub


Já tentei colocar no Criteriarange o Range ("A1:B3", porém, não funciona também!

Se vocês puderem me ajudar, agradeço!!!!
Att.
Éverton Silva

Re: Memória Filtro Avanlado - VBA

Enviado: 07 Ago 2017 às 16:49
por osvaldomp
sugestão - disponibilize uma amostra do seu arquivo Excel, com o código instalado e coloque/explique na própria planilha qual o resultado esperado.

dica - para postar códigos diretamente no fórum, após colar o código aqui selecione-o e clique na ferramenta "Código" no menu ~~~> ícone </>

Re: Memória Filtro Avanlado - VBA

Enviado: 07 Ago 2017 às 17:17
por ersilva88
Segue em anexo!

Vou me atentar da próxima vez, para criar o tópico correto!

Muito obrigado!

Att;
Everton Silva

Re: Memória Filtro Avanlado - VBA

Enviado: 07 Ago 2017 às 18:21
por osvaldomp
Olá, Éverton.
A causa do problema é que na área de critérios há células vazias.
Assim, a área de critérios está setada como 'A1:B3', mas em 'A3:B3' não há dados. Faça um teste, coloque naquele intervalo por exemplo JV e 5101AA.

Para filtrar com apenas uma linha de critérios é preciso ajustar o intervalo para 'A1:B2', assim: menu Fórmulas / Gerenciador de Nomes / duplo clique em Criterios / altere a fórmula de =FE!$A$1:$B$3 para =FE!$A$1:$B$2

sugestão - no código Filtrar_FE coloque uma chamada para o código Limpar, conforme abaixo.
Código: Selecionar todos
Sub Filtrar_FE()
'
' Filtrar_DE_FE Macro
' Filtro criado para definir centro e CFOP, da planilha consolidado.

Limpar

    Range("Consolidado_new!_FilterDatabase").AdvancedFilter Action:=xlFilterCopy _
        , CriteriaRange:=Range("FE!Criteria"), CopyToRange:=Range("A5"), Unique:=False
        
End Sub

Re: Memória Filtro Avanlado - VBA

Enviado: 08 Ago 2017 às 08:43
por ersilva88
Bom dia,

Osvaldo, perfeito! Eu não sabia, que deixar um intervalo com espaço em branco dentro do filtro avançado, interferia no resultado!
Deu certo! Muito obrigado pela ajuda!

Quanto á sugestão do Limpar, ficou bacana, pois, posso dispensar o botão "Limpar" e faço tudo dentro de uma única rotina!

Att.
Éverton Silva