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 todos
If 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 todos
If 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 todos
lblRegistros.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....