ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

FILTRO LISTVIEW

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Douglas Vargas
Colaborador
Colaborador
Mensagens: 57
Registrado em: Sáb Ago 16, 2014 10:44 am

FILTRO LISTVIEW

Mensagem por Douglas Vargas » Sex Dez 26, 2014 12:30 pm

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! ;)


Douglas S. de Vargas

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1414
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: FILTRO LISTVIEW

Mensagem por Reinaldo » Sex Dez 26, 2014 1:23 pm

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


Reinaldo
:oops: :D :mrgreen: :geek:

Douglas Vargas
Colaborador
Colaborador
Mensagens: 57
Registrado em: Sáb Ago 16, 2014 10:44 am

Re: FILTRO LISTVIEW

Mensagem por Douglas Vargas » Seg Dez 29, 2014 10:55 am

Bom Dia Reinaldo,

Nesse caso supondo que eu tenha cinco colunas, como faço para carregar elas nesse código?


Douglas S. de Vargas

Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1414
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: FILTRO LISTVIEW

Mensagem por Reinaldo » Seg Dez 29, 2014 6:45 pm

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?


Reinaldo
:oops: :D :mrgreen: :geek:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


CROVADOR
Colaborador
Colaborador
Mensagens: 41
Registrado em: Ter Mar 13, 2018 11:15 am

Re: FILTRO LISTVIEW

Mensagem por CROVADOR » Seg Jan 13, 2020 1:04 am

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



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1414
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: FILTRO LISTVIEW

Mensagem por Reinaldo » Seg Jan 13, 2020 5:54 pm

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.


Reinaldo
:oops: :D :mrgreen: :geek:

CROVADOR
Colaborador
Colaborador
Mensagens: 41
Registrado em: Ter Mar 13, 2018 11:15 am

Re: FILTRO LISTVIEW

Mensagem por CROVADOR » Seg Jan 13, 2020 7:50 pm

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
Anexos
GRU.rar
(95.44 KiB) Baixado 63 vezes



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1414
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: FILTRO LISTVIEW

Mensagem por Reinaldo » Ter Jan 14, 2020 9:44 am

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


Reinaldo
:oops: :D :mrgreen: :geek:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder