Notifications
Clear all

Filtro intervalo datas Listbox

3 Posts
2 Usuários
0 Reactions
933 Visualizações
NERI S
(@neri-s)
Posts: 0
Estimable Member
Topic starter
 

Alguém possui um exemplo de filtro de intervalo de datas Listbox? Tem um formulário que possui filtros de outros dados, agora preciso colocar filtro de intervado de data como por exemplo: DataIni: 01/08/2018 DataFim: 31/08/2018

Coloquei em anexo um exemplo (com exemplo fica mais fácil entender), onde no Form quero digitar dataini e datafim (por exemplo quero um relatorio que seja do dia 01/05/17 a 03/05/17....

Para o Listview eu utilizo o código abaixo.... agora preciso algo no Listbox

Sub filtroDtIniDtaFimvcto()
    Dim Tmp As Long
    Dim i As Long
    Dim sDtIni As Date
    Dim sDtFim As Date
    
    On Error GoTo Erro

    Tmp = FrmDadosPesq.ListView1.ListItems.Count
    
        If txtdatainiVcto = "" Then
                txtdatainiVcto.SetFocus
            Exit Sub
        ElseIf txtdatafinxVcto = "" Then
                txtdatafinxVcto.SetFocus
            Exit Sub
    
        End If
    
    sDtIni = txtdatainiVcto.Value
    sDtFim = txtdatafinxVcto.Value

    For i = 1 To Tmp
    
        With ListView1
            If .ListItems(i).SubItems(9) = "" Then
                FrmDadosPesq.ListView1.ListItems.Remove i
                    i = i - 1
                    Tmp = Tmp - 1
                        If i = Tmp Then Exit For
                            Tmp = FrmDadosPesq.ListView1.ListItems.Count
           
            ElseIf .ListItems(i).SubItems(9) < sDtIni Then
                FrmDadosPesq.ListView1.ListItems.Remove i
                    i = i - 1
                    Tmp = Tmp - 1
                        If i = Tmp Then Exit For
                            Tmp = FrmDadosPesq.ListView1.ListItems.Count
                            
           ElseIf .ListItems(i).SubItems(9) > sDtFim Then
                FrmDadosPesq.ListView1.ListItems.Remove i
                    i = i - 1
                    Tmp = Tmp - 1
                        If i = Tmp Then Exit For
                            Tmp = FrmDadosPesq.ListView1.ListItems.Count
                        
            ElseIf .ListItems(i).SubItems(9) = sDtFim Then
            
                    Tmp = Tmp ' 1
                        If i = Tmp Then Exit For
                            Tmp = FrmDadosPesq.ListView1.ListItems.Count
                        
            End If
                 
        End With

    Next

Exit Sub

Erro:
      txtdatafinxVcto.SetFocus

End Sub
 
Postado : 31/08/2018 12:13 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

NERI S,

Boa noite!

Fiz da seguinte forma:

Ao digitar a data inicial e depois a data final, quando sair do campo da data final, automaticamente, aparecerá no listbox os dados correspondentes às datas que foram entradas.

Fiz dessa forma porque o botão Filtrar existente já está fazendo os outros filtros e de forma muito complexa. Então... fica muito mais complicado para tentar jogar o filtro de datas dentro dele.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 01/09/2018 4:14 pm
NERI S
(@neri-s)
Posts: 0
Estimable Member
Topic starter
 

Wagner
Ficou muito bom. Muito obrigado pela ajuda.
Eu não gosto de usar o listbox pois acho que os recursos são muito reduzidos. Mas o cliente é resistente para alterar de 64 para 32 bits. Desta forma, temos que fazer da forma que dá.
Gostei e vou ajustar para a minha necessidade. Show.

 
Postado : 03/09/2018 3:35 am