Página 1 de 1
FILTRO LISTVIEW
Enviado: Sex Dez 26, 2014 12:30 pm
por Douglas Vargas
Boa Tarde Maus amigos,
Alguém sabe como fazer um filtro na Listview da seguinte forma....
Uma das colunas da listview é M.I e preciso filtrar apenas as que são maiores que 0..... tem vários valores....2,5 3,5 4,5.... enfim, ai o melhor seria filtrar o que for maior que 0.
Pode fazer o exemplo com uma coluna, bem simples que eu adapto ao meu código.
O meu código é complexo se eu for compartilhar vai demorar muito até alguém adapta-lo.... então acho melhor coletar sugestões e adaptar..... depois compartilho com vocês como ficou....
Abraço e bom fim de ano para todos!
Re: FILTRO LISTVIEW
Enviado: Sex Dez 26, 2014 1:23 pm
por Reinaldo
Talvez assim>
Código: Selecionar todos
'Filtrar uma coluna retirando o registro do listview
Private Sub SeuBotao_Click()
Dim Tmp As Integer, i As Integer
Tmp = UserForm1.ListView1.ListItems.Count 'Troque para o nome de seu formulario
For i = 1 To Tmp
With ListView1
If .ListItems(i).SubItems(2) > 0 Then 'Supondo que o valor a ser filtrado seja a coluna 3
UserForm1.ListView1.ListItems.Remove i
i = i - 1
Tmp = Tmp - 1
If i = Tmp Then Exit For
Tmp = UserForm1.ListView1.ListItems.Count
End If
End With
Next
End Sub
Re: FILTRO LISTVIEW
Enviado: Seg Dez 29, 2014 10:55 am
por Douglas Vargas
Bom Dia Reinaldo,
Nesse caso supondo que eu tenha cinco colunas, como faço para carregar elas nesse código?
Re: FILTRO LISTVIEW
Enviado: Seg Dez 29, 2014 6:45 pm
por Reinaldo
Verificou o titulo do código --> Filtrar uma coluna retirando o registro do listview
Ou seja o listview "já foi carregado", a rotina retira o item que não atenda o "filtro".
È uma rotina bem simples; não é isso que deseja?
Re: FILTRO LISTVIEW
Enviado: Seg Jan 13, 2020 1:04 am
por CROVADOR
OLÁ AMIGOS ESTOU USANDO ESTE CÓDIGO MAS ELE ESTÁ RETORNANDO ERRO EM TEMPO DE EXECUÇÃO 35600...
ALGUEM PODE AJUDAR-ME?
'Filtrar uma coluna retirando o registro do listview
Private Sub SeuBotao_Click()
Dim Tmp As Integer, I As Integer
Tmp = CADASTRO_FORNECEDOR.ListView1.ListItems.Count 'Troque para o nome de seu formulario
For I = 1 To Tmp
With ListView1
If .ListItems(I).SubItems(9) = "EM DIA" Then 'Supondo que o valor a ser filtrado seja a coluna 9
CADASTRO_FORNECEDOR.ListView1.ListItems.Remove I
I = I - 1
Tmp = Tmp - 1
If I = Tmp Then Exit For
Tmp = CADASTRO_FORNECEDOR.ListView1.ListItems.Count
End If
End With
Next
End Sub
Re: FILTRO LISTVIEW
Enviado: Seg Jan 13, 2020 5:54 pm
por Reinaldo
Básicamente o erro "erro em tempo de execução 35600 index out of bounds" ocorre quando se refere a um item "I" que não e encontrado no listview.
Somente pelo codigo não há como saber o real motivo.
Experimente; entre outros; o postado em
viewtopic.php?t=2642
http://www.planilhando.com.br/forum/vie ... 10&t=27929
http://www.planilhando.com.br/forum/vie ... 10&t=25950
poste seu modelo que origina o erro, se não conseguir adaptar.
Re: FILTRO LISTVIEW
Enviado: Seg Jan 13, 2020 7:50 pm
por CROVADOR
BOA TARDE REINALDO TUDO BEM? OBRIGADO PELA DICA MAS PESQUISEI NOS SITES QUE ME PASSOU E NADA RELACIONADO AO QUE PRECISO.
EU QUERIA FILTRAR OS ITEMS DA LISTVIEW E NÃO DO BANCO DE DADOS ENTENDE, ESTE CÓDIGO ABAIXO ELE ATENDE MAS ESTÁ DANDO O ERRO QUE MENCIONEI ACIMA VC TERIA UMA SUGESTÃO PARA ME AJUDAR PARA FILTRAR OS DADOS DE UMA COLUNA DO LISTVIEW?
OBRIGADO PELA FORÇA E AGUARDO SUA AJUDA...
SEGUE ANEXO
Re: FILTRO LISTVIEW
Enviado: Ter Jan 14, 2020 9:44 am
por Reinaldo
Evite; em suas solicitações; escrever tudo em caixa Alta (maiúscula), nos foruns isso significa gritar, o que não"pega" bem.
Quanto sua demanda experimente:
Código: Selecionar todos
'Filtrar por uma coluna retirando o registro do listview
Private Sub SeuBotao_Click()
Dim Tmp As Integer, I As Integer
Tmp = ListView1.ListItems.Count 'Troque para o nome de seu formulario
For I = 1 To Tmp
With ListView1
If I > Tmp Then GoTo saida
If .ListItems(I).SubItems(9) = "EM DIA" Then 'Supondo que o valor a ser filtrado seja a coluna 9
ListView1.ListItems.Remove I
I = I - 1
Tmp = Tmp - 1
End If
End With
Next
saida:
'Não entendi a necessidade das tres linhas abaixo,visto que somente a ultima e considerada
label_registro.Caption = "NENHUM REGISTRO ENCONTRADO."
label_registro.Caption = "UM ITEM ENCONTRADO."
label_registro.Caption = ListView1.ListItems.Count & " ITENS ENCONTRADOS."
End Sub