Página 1 de 1
Filtrar Datas no Listbox
Enviado: 10 Mar 2022 às 19:11
por vilc
boa noite a todos, estou com um formulário que contem um listbox, queria fazer um filtro entre duas datas.
o listbox ja contem os dados, só queria filtrar.
a guia do listbox é concluídos
segue em anexo a planilha
Re: Filtrar Datas no Listbox
Enviado: 11 Mar 2022 às 08:29
por PHSabater
Cole o código abaixo no botão pesquisar.
Não validei entrada de dados e estou buscando a data pela data de abertura.
Com a estrutura básica em mãos consegue fazer as validações e alterações que necessitar.
Qualquer dúvida só chamar novamente.
Dim Linha, LinhaListbox As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("tbchamados")
Linha = 2
LinhaListbox = 0
ListBoxConcluidos.Clear
With ws
While ws.Cells(Linha, 1).Value <> Empty
If ws.Cells(Linha, 2) >= CDate(TxtDataInicio.Value) And Cells(Linha, 2) <= CDate(TxtDataFinal.Value) Then
With FormConcluidos.ListBoxConcluidos
.AddItem
.List(LinhaListbox, 0) = ws.Cells(Linha, 1) 'codigo 'A
.List(LinhaListbox, 1) = ws.Cells(Linha, 5) 'descrição 'E
.List(LinhaListbox, 2) = ws.Cells(Linha, 2) 'data "B
.List(LinhaListbox, 3) = ws.Cells(Linha, 4) 'prioridade 'D
.List(LinhaListbox, 4) = ws.Cells(Linha, 6) 'patrimonio 'F
.List(LinhaListbox, 5) = ws.Cells(Linha, 7) 'solicitante 'G
.List(LinhaListbox, 6) = ws.Cells(Linha, 8) 'secretaria "H
.List(LinhaListbox, 7) = ws.Cells(Linha, 12) 'tecnico "L
.List(LinhaListbox, 8) = ws.Cells(Linha, 10) 'status " 'J
.List(LinhaListbox, 9) = ws.Cells(Linha, 14) 'parecer tecnico 'N
LinhaListbox = LinhaListbox + 1
End With
End If
Linha = Linha + 1
Wend
End With
Re: Filtrar Datas no Listbox
Enviado: 11 Mar 2022 às 14:11
por vilc
PhSabater, funcionou!, só faltou um detalhe, precisava que ele filtras-se quem está com status Concluído.
Re: Filtrar Datas no Listbox
Enviado: 11 Mar 2022 às 14:49
por PHSabater
Acrescente o filtro no IF, dessa forma:
If ws.Cells(Linha, 2) >= CDate(TxtDataInicio.Value) And Cells(Linha, 2) <= CDate(TxtDataFinal.Value) _
And ws.Cells(Linha, 10) = "Concluido" Then
Código Completo:
Dim Linha, LinhaListbox As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("tbchamados")
Linha = 2
LinhaListbox = 0
ListBoxConcluidos.Clear
With ws
While ws.Cells(Linha, 1).Value <> Empty
If ws.Cells(Linha, 2) >= CDate(TxtDataInicio.Value) And Cells(Linha, 2) <= CDate(TxtDataFinal.Value) _
And ws.Cells(Linha, 10) = "Concluido" Then
With FormConcluidos.ListBoxConcluidos
.AddItem
.List(LinhaListbox, 0) = ws.Cells(Linha, 1) 'codigo 'A
.List(LinhaListbox, 1) = ws.Cells(Linha, 5) 'descrição 'E
.List(LinhaListbox, 2) = ws.Cells(Linha, 2) 'data "B
.List(LinhaListbox, 3) = ws.Cells(Linha, 4) 'prioridade 'D
.List(LinhaListbox, 4) = ws.Cells(Linha, 6) 'patrimonio 'F
.List(LinhaListbox, 5) = ws.Cells(Linha, 7) 'solicitante 'G
.List(LinhaListbox, 6) = ws.Cells(Linha, 8) 'secretaria "H
.List(LinhaListbox, 7) = ws.Cells(Linha, 12) 'tecnico "L
.List(LinhaListbox, 8) = ws.Cells(Linha, 10) 'status " 'J
.List(LinhaListbox, 9) = ws.Cells(Linha, 14) 'parecer tecnico 'N
LinhaListbox = LinhaListbox + 1
End With
End If
Linha = Linha + 1
Wend
End With
Re: Filtrar Datas no Listbox
Enviado: 11 Mar 2022 às 18:56
por vilc
PHSabater, muito obrigado, funcionou perfeitamente... vlw mesmo irmão ficou top.
Re: Filtrar Datas no Listbox
Enviado: 11 Mar 2022 às 20:56
por vilc
PHSabater, tenho neste mesmo formulário os campos de pesquisa: Ordem que seria o código, patrimônio, solicitante, técnico.
a listbox já abre filtrada, fiz uma adaptação ao código para poder abrir filtrada com as linhas que contem o status de concluído.
quando faço as pesquisas funcionam, mas seu eu apagar qualquer valor das caixas de pesquisa, a listbox carrega tbm as linhas que contem status de pendente.
Re: Filtrar Datas no Listbox
Enviado: 12 Mar 2022 às 08:59
por PHSabater
Vi que você não tem esse filtro de status para sua rotina de consulta por esses campos, só incluir antes do carregamento do listbox, na mesma validação que faz para ver se é o resultado procurado pela sua pesquisa.
Código: Selecionar todosIf UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) And _
.Cells(Linha, 10) = "Concluido" Then
Precisa incluir esse filtro para todos os campos de pesquisa.
Re: Filtrar Datas no Listbox
Enviado: 12 Mar 2022 às 10:03
por vilc
PHSabater escreveu: ↑12 Mar 2022 às 08:59
Vi que você não tem esse filtro de status para sua rotina de consulta por esses campos, só incluir antes do carregamento do listbox, na mesma validação que faz para ver se é o resultado procurado pela sua pesquisa.
Código: Selecionar todosIf UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) And _
.Cells(Linha, 10) = "Concluido" Then
Precisa incluir esse filtro para todos os campos de pesquisa.
PHSabater, funcionou perfeito, muito obrigado mais uma vez....
Re: Filtrar Datas no Listbox
Enviado: 12 Mar 2022 às 17:14
por vilc
PHSabater escreveu: ↑11 Mar 2022 às 08:29
Cole o código abaixo no botão pesquisar.
Não validei entrada de dados e estou buscando a data pela data de abertura.
Com a estrutura básica em mãos consegue fazer as validações e alterações que necessitar.
Qualquer dúvida só chamar novamente.
Dim Linha, LinhaListbox As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("tbchamados")
Linha = 2
LinhaListbox = 0
ListBoxConcluidos.Clear
With ws
While ws.Cells(Linha, 1).Value <> Empty
If ws.Cells(Linha, 2) >= CDate(TxtDataInicio.Value) And Cells(Linha, 2) <= CDate(TxtDataFinal.Value) Then
With FormConcluidos.ListBoxConcluidos
.AddItem
.List(LinhaListbox, 0) = ws.Cells(Linha, 1) 'codigo 'A
.List(LinhaListbox, 1) = ws.Cells(Linha, 5) 'descrição 'E
.List(LinhaListbox, 2) = ws.Cells(Linha, 2) 'data "B
.List(LinhaListbox, 3) = ws.Cells(Linha, 4) 'prioridade 'D
.List(LinhaListbox, 4) = ws.Cells(Linha, 6) 'patrimonio 'F
.List(LinhaListbox, 5) = ws.Cells(Linha, 7) 'solicitante 'G
.List(LinhaListbox, 6) = ws.Cells(Linha, 8) 'secretaria "H
.List(LinhaListbox, 7) = ws.Cells(Linha, 12) 'tecnico "L
.List(LinhaListbox, 8) = ws.Cells(Linha, 10) 'status " 'J
.List(LinhaListbox, 9) = ws.Cells(Linha, 14) 'parecer tecnico 'N
LinhaListbox = LinhaListbox + 1
End With
End If
Linha = Linha + 1
Wend
End With
PHSabater, se eu quiser colocar uma label com a seguinte mensagem: entre os dias 31/01/2000 e 31/02/2000 foram registrados 10 chamados. como ficaria o codigo junto com essa pesquisa?
Re: Filtrar Datas no Listbox
Enviado: 13 Mar 2022 às 09:07
por PHSabater
Adicione o código abaixo após o carregamento de dados na listbox, vai precisar fazer em todos os códigos que fazem o carregamento. Pode ser após o fechamento do IF das condicionais da pesquisa para os dados da listbox aproveitando o resultado da LinhaListbox que contém o número de registros inseridos na listbox.
Código: Selecionar todoslblRegistros.Caption = LinhaListbox & " registro(s) encontrado(s)."
Re: Filtrar Datas no Listbox
Enviado: 13 Mar 2022 às 11:41
por vilc
PHSabater, ficou top, funcionou perfeito, muito obrigado pelas informações....