Mauro,
Com base no exemplo referido por você, eu o adaptei de forma que permita que o usuário do projeto pesquise de vários modos, exemplo:
Opções de pesquisas:
Centro de Custo e Conta Razão
Conta razão apenas
Clientes apenas
Centro de Custo apenas
Ou pesquisar por todos os critérios.
O que estou a fazer é permitir que, além destas opções, o usuário possa também pesquisar pelas datas de pagamentos que estiverem dentro do período das datas descritas no txtdatainicial e txtdatafinal, sem desconsiderar a pesquisa anterior.
Eu utilizo este código para atender a pesquisa por todos os centro de Custo.
'Filtrar por tds os critérios
If ComboBoxCategorias.Text <> "" And ComboBoxProdutos.Text <> "" And ComboBox8.Text <> "" And ComboBox9.Text <> "" Then
Dim Tmp As Long
Dim I As Long
Dim sDtEmiss
Dim sTransportadora
Dim cliente
Dim situação
Tmp = UserForm9.lslista.ListItems.Count
sDtEmiss = ComboBoxCategorias.Text
sTransportadora = ComboBoxProdutos.Text
cliente = ComboBox8.Text
situação = ComboBox9.Text
Tmp = UserForm9.lslista.ListItems.Count
For I = 1 To Tmp
With lslista
If .ListItems(I).SubItems(2) = sDtEmiss And .ListItems(I).SubItems(3) = sTransportadora And .ListItems(I).SubItems(9) = situação And .ListItems(I).SubItems(10) = cliente Then
Tmp = Tmp '- 1
If I = Tmp Then Exit For
Tmp = UserForm9.lslista.ListItems.Count
Else
UserForm9.lslista.ListItems.Remove I
I = I - 1
Tmp = Tmp - 1
If I = Tmp Then Exit For
Tmp = UserForm9.lslista.ListItems.Count
End If
End With
Next
Me.Label10.Caption = "Total de Programações: " & Format(UserForm9.lslista.ListItems.Count)
Call Somar
Call datas
Exit Sub
End If
Observa que, como sugerido por você, utilizo o código para pesquisar pelas datas iniciais e datas Finais, chamando-o pelo Call datas. Vide a descrição:
Porém dá erro na linha em amarelo. O que devo fazer?
Private Sub datas()
Dim Tmp As Long
Dim I As Long
Dim sDtIni As Date
Dim sDtFim As Date
Tmp = UserForm9.lslista.ListItems.Count
sDtIni = txtDataInicial.Value
sDtFim = txtDataFinal.Value
For I = 1 To Tmp
With lslista
If .ListItems(I).SubItems(7) < sDtIni Then
UserForm9.lslista.ListItems.Remove I
I = I - 1
Tmp = Tmp - 1
If I = Tmp Then Exit For
Tmp = UserForm9.lslista.ListItems.Count
ElseIf .ListItems(I).SubItems(7) > sDtFim Then
UserForm9.lslista.ListItems.Remove I
I = I - 1
Tmp = Tmp - 1
If I = Tmp Then Exit For
Tmp = UserForm9.lslista.ListItems.Count
ElseIf .ListItems(I).SubItems(7) = sDtFim Then
Tmp = Tmp ' 1
If I = Tmp Then Exit For
Tmp = UserForm9.lslista.ListItems.Count
End If
End With
Next
End Sub
Postado : 27/04/2014 6:22 am