Notifications
Clear all

Erro ao retornar pesquisa autofilter com data

12 Posts
4 Usuários
0 Reactions
2,637 Visualizações
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

Bom dia a todos,

Estou com um problema ao executar um autofilter na coluna A.

Uso o seguinte código:

Dim DataInicial As String, DataFinal As String
DataInicial = VBA.Format(Range("A1").Value, "dd/mm/yyyy")
DataFinal = VBA.Format(Range("B1").Value, "dd/mm/yyyy")

    ActiveSheet.Range("$A:$M").Select
    Selection.AutoFilter Field:=1, Criteria1:=">=" & DataInicial, Operator:=xlAnd, _
    Criteria2:="<=" & DataFinal

Sendo que na célula A1 eu tenho a informação 01/01/2005 (data de inicio de utilização de nosso sistema) e na célula B1 faço um "=today()" e depois copio e colo como valor.

As primeiras vezes funcionou redondo, agora ele não retorna nada.

Alguém sabe o que pode ser?

 
Postado : 30/01/2017 9:01 am
(@skulden)
Posts: 170
Estimable Member
 

Você declara O DataInicial e DataFinal como string e procura uma célula formatada como data? Se for isso, ele realmente não vai encontrar.

To falando isso sem rodar seu código, mas tente declarar suas Variaveis como date ou como Variant.

Eu já tive problema com autofilter por causa disso, então talvez você esteja passando pela mesma coisa.

Abraços.

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 30/01/2017 10:06 am
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

skulden
Testei declarando como String, Variant e Date, não da certo de nenhuma das três maneiras. Quando fiz o código pela primeira vez, mesmo como string havia rodado certo.

 
Postado : 30/01/2017 10:31 am
(@skulden)
Posts: 170
Estimable Member
 

Poderia, por favor, anexar a Planilha?

Não se esqueça de compactar em .zip

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 30/01/2017 10:32 am
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

skulden

Segue,
obrigado pela ajuda!!!

Lembrando que podem conter datas de 2005 até o dia de emissão do relatório, e também posso ter um relatório com um numero muito maior de linhas. No exemplo anexado tenho um exemplo básico com poucas informações.

 
Postado : 30/01/2017 10:44 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde C_Nicole,

Olhei rapidamente sua planilha e não tem nenhum código nela. Outra coisa, tem certeza que anexou a planilha correta? Essa planilha me parece bem mal estruturada para utilizar um filtro, não me parece um banco de dados.

att,

 
Postado : 03/02/2017 11:38 am
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

bruno

É essa planilha mesmo. Alguns dados foram retirados devido a informações que são contidas.

Sobre o código, não fica na planilha fica em uma outra. O trecho do código que dá problema é esse:

Columns("A:A").Select
    Selection.ColumnWidth = 20
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Rows("1:1").Select
    Selection.AutoFilter
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "01/01/2005"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("A1:B1").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

Dim DataInicial As String, DataFinal As String
DataInicial = VBA.Format(Range("A1").Value, "dd/mm/yyyy")
DataFinal = VBA.Format(Range("B1").Value, "dd/mm/yyyy")

    ActiveSheet.Range("$A:$M").Select
    Selection.AutoFilter Field:=1, Criteria1:=">=" & DataInicial, Operator:=xlAnd, _
    Criteria2:="<=" & DataFinal

O erro é quando o comando AutoFilter não filtra nada, mesmo contendo datas na coluna A.

 
Postado : 03/02/2017 12:11 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Nicole,

Veja o código que coloque no arquivo em anexo.

No caso eu não adicionei uma nova linha para colocar a DataInicial ou a DataFinal, já escrevi no código para já sair no formato norte-americano (mm/dd/aaaa).
O código está no módulo 1.

Teste e de retorno.

att,

 
Postado : 05/02/2017 8:19 pm
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

Bom dia Bruno,

Primeiramente obrigado pela resposta.

Deixe-me tirar umas duvidas:
Quando vc coloca "Nlin" e "Ncol", vc está definindo as ranges da planilha?
Quando vc menciona Datafinal sem uma data especifica ele assume qual informação?
Mesmo definindo o formato norte-americano, se minha planilha estiver no formato BR ele assume o filtro da mesma maneira?

Muito obrigado novamente, perdão pelas perguntas, estou usando o VBA faz pouco tempo.

 
Postado : 06/02/2017 11:07 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Nicole,

Nlin = Número de linhas; NCol=Número de colunas. Pegando esses valores para a escolha da área que vai ser filtrada.
Assim o Range(Cells(1,1),Cells(Nlin,Ncol) é a área, note que Cells(Valor da Linha, Valor da Coluna).

Note que no formato da DataFinal usei a função Date:

DataFinal = Format(Date, "mm/dd/yyyy")

Date vai retornar o mesmo valor que a função HOJE() da planilha.

Seus dados podem estar em formato dia/mês/ano na planilha que vai funcionar (pelo menos na sua planilha de exemplo funcionou).

Qualquer dúvida é só perguntar.

att,

 
Postado : 06/02/2017 5:22 pm
(@c_nicoleti)
Posts: 24
Eminent Member
Topic starter
 

Bruno, adaptei o código que você enviou ao meu código e aparentemente está funcionando redondo.

Muito obrigado mesmo! Caso volte a apresentar problema reabro o tópico.

 
Postado : 07/02/2017 5:08 am
(@gkudla)
Posts: 1
New Member
 

@brunoxro ou @C_Nicoleti poderiam me enviar a planilha que resolveu o problema? Estou com um problema parecido e a planilha não está mais em anexo no tópico.

 
Postado : 11/08/2020 9:21 am