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