Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por ersilva88
#25333
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
Por osvaldomp
#25336
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 </>
Por ersilva88
#25342
Segue em anexo!

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

Muito obrigado!

Att;
Everton Silva
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#25348
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
Por ersilva88
#25352
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord