Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por vilc
Posts
#69569
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
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por PHSabater
Posts Avatar
#69572
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
Avatar do usuário
Por PHSabater
Posts Avatar
#69588
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
Por vilc
Posts
#69606
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.
Avatar do usuário
Por PHSabater
Posts Avatar
#69615
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.
Por vilc
Posts
#69616
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....
Por vilc
Posts
#69630
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?
Avatar do usuário
Por PHSabater
Posts Avatar
#69636
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)."
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord