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.
#63943
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"):
Imagem

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
  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   
O código VBA traz erroneamente 3 linhas (anteriores a 01/12/2020), as demais linhas coincidem com o filtro avançado manual.

Agradeço demais se alguém tiver alguma ideia do que pode estar causando isso!

Obrigado desde já!
#63949
Sugestão: disponibilize uma amostra do seu arquivo Excel (imagens não servem) com 10 linhas de dados no máximo, coloque o resultado atual do código e ao lado ou abaixo coloque o resultado desejado com as explicações.
#64022
Olá Osvaldo, tudo bem??
Deixei anexo um exemplo do meu arquivo original. A base tem 10 linhas e a comparação dos resultados do filtro manual e do código vba(junto com as explicações) estão na segunda aba. Nessa aba, as linhas em laranja são as linhas que o código VBA está filtrando erroneamente.
Obrigado pela dica!
Você não está autorizado a ver ou baixar esse anexo.
#64025
Olá, @CaueEvangelista .
A sua explicação, bem como os resultados colocados, foram claros e precisos. Parabéns! :)

Experimente as opções abaixo em A9.
A primeira opção utiliza a sua fórmula em B6, a segunda utiliza a sua fórmula em B3 e por fim a terceira utiliza somente a quantidade de meses em B2.
Se B2=4, como está no seu exemplo, então todas as opções retornarão >44166 (que corresponde a 01/12/2020)
Código: Selecionar todos
=">"&DATA.VALOR(B6)

=">"&DATA(ANO(B3);MÊS(B3);1)

=">"&DATA(ANO(DATAM(HOJE();-B2));MÊS(DATAM(HOJE();-B2));1)
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