Filtro Avançado em VBA vs Filtro Avançado Manual
Enviado: 20 Abr 2021 às 13:13
Olá pessoal, tudo bem?? Espero que sim!
Pessoal, sou novato no VBA (o código abaixo é literalmente o meu primeiro código vba) e estou tentando agilizar uma função que tenho no trabalho.
O cenário é esse: tenho uma base muito grande e frequentemente tenho que realizar alguns filtros, copiar a base filtrada em uma outra aba e então enviar essa base filtrada por email. Comecei a fazer um protótipo de melhoria usando primeiro o Filtro Avançado Manual e agora quero criar uma macro vba que filtre e cole o resultado em outra aba.
Esse é o print da minha planilha e a explicação do que eu fiz nela(O nome dessa aba é "BASE"):

Explicação:
O primeiro bloco de células calcula a data que eu vou usar de critério para o filtro (eu capturo a data de hoje, "volto" 4 meses e uso isso pra concatenar o ">01/12/2020", convertendo tudo para texto)
Na célula A8 começa o campo dos critérios. Eu quero filtrar apenas os registros da base que aconteceram depois de 01/12/2020, cujo tipo de movimento é "281" e cujos status são aqueles três descritos.
Aqui vem o problema: quando eu realizo o filtro avançado manual (isso é, indo até a aba "Dados", clicando em "Filtro Avançado" e selecionando manualmente os intervalos de Dados e de Critérios) eu obtenho a base filtrada corretamente, porém com o meu código VBA a base filtrada vem com alguns registros que não deveriam aparecer (registros anteriores a dezembro de 2020).
Esse é o meu código VBA:
Agradeço demais se alguém tiver alguma ideia do que pode estar causando isso!
Obrigado desde já!
Pessoal, sou novato no VBA (o código abaixo é literalmente o meu primeiro código vba) e estou tentando agilizar uma função que tenho no trabalho.
O cenário é esse: tenho uma base muito grande e frequentemente tenho que realizar alguns filtros, copiar a base filtrada em uma outra aba e então enviar essa base filtrada por email. Comecei a fazer um protótipo de melhoria usando primeiro o Filtro Avançado Manual e agora quero criar uma macro vba que filtre e cole o resultado em outra aba.
Esse é o print da minha planilha e a explicação do que eu fiz nela(O nome dessa aba é "BASE"):

Explicação:
O primeiro bloco de células calcula a data que eu vou usar de critério para o filtro (eu capturo a data de hoje, "volto" 4 meses e uso isso pra concatenar o ">01/12/2020", convertendo tudo para texto)
Na célula A8 começa o campo dos critérios. Eu quero filtrar apenas os registros da base que aconteceram depois de 01/12/2020, cujo tipo de movimento é "281" e cujos status são aqueles três descritos.
Aqui vem o problema: quando eu realizo o filtro avançado manual (isso é, indo até a aba "Dados", clicando em "Filtro Avançado" e selecionando manualmente os intervalos de Dados e de Critérios) eu obtenho a base filtrada corretamente, porém com o meu código VBA a base filtrada vem com alguns registros que não deveriam aparecer (registros anteriores a dezembro de 2020).
Esse é o meu código VBA:
Código: Selecionar todos
O código VBA traz erroneamente 3 linhas (anteriores a 01/12/2020), as demais linhas coincidem com o filtro avançado manual. Option Explicit
Sub FiltrarReservas()
Dim rgDados As Range, rgCriterios As Range
Set rgDados = EstaPastaDeTrabalho.Worksheets("BASE").Range("A13").CurrentRegion
Set rgCriterios = EstaPastaDeTrabalho.Worksheets("BASE").Range("A8").CurrentRegion
rgDados.AdvancedFilter xlFilterInPlace, rgCriterios
End Sub
Agradeço demais se alguém tiver alguma ideia do que pode estar causando isso!
Obrigado desde já!