Pessoal depois de alguns testes, eu descobri alguns erros no código que já foram corrigidos, mas eu gostaria de compartilhar com vocês caso alguém queira utilizar o código em algum projeto.
Eu descobri que um dos problemas era que a data final usada na comparação, caso fosse utilizado o valor da planilha, tinha apenas o dia utilizado na comparação, então se o dia digitado em dataf fosse maior que o último dia registrado independente do mês, a data final da planilha seria utilizada.
Exemplo: valor digitado em dataf: 01/03/2015
valor do último registro: 08/04/2015
Neste caso o filtro funciona corretamente e a data de 01/03/2015 é utilizada, mas no caso abaixo
Exemplo 2: valor digitado em dataf: 20/03/2015
valor do último registro: 08/04/2015
Neste caso o valor em dataf era considerado maior que o último registro, pois o dia era maior.
Para resolver este problema, eu utilizei uma data fictícia fixa (31/12/9999) para comparação.
O que gerou outro problema "Erro 35600 - Out of bounds", esse erro era devido ao código do filtro em si, então este também foi modificado.
O código final ficou assim:
'Filtrar somente pelas Datas Inicial e Final'
Private Sub cbtSo2Dts_Click()
Dim Tmp As Long
Dim i As Long
If datai = "" Then
MsgBox "Digite uma Data Valida", , "Data Inicial Obrigatória !!!"
datai.SetFocus
Exit Sub
End If
'Código do Filtro'
For i = lstLista.ListItems.Count To 1 Step -1
If CDate(lstLista.ListItems(i).SubItems(5)) < datai.Value Then
lstLista.ListItems.Remove i
ElseIf CDate(lstLista.ListItems(i).SubItems(5)) > dataf.Value Then
lstLista.ListItems.Remove i
End If
Next
End Sub
De qualquer forma, obrigado pela ajuda, e fica o código para quem tiver interesse em fazer algo semelhante.
Postado : 10/04/2015 6:38 am