Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Listview - Filtrar valores numéricos

Dúvidas gerais sobre Excel
Rafa - Info
Colaborador
Colaborador
Mensagens: 24
Registrado em: Ter Nov 16, 2010 6:33 pm

Listview - Filtrar valores numéricos

Mensagem por Rafa - Info »

Boa tarde pessoal, estou mexendo no listview e preciso fazer busca por números. Estou na seguinte situaçao, seguindo um primeiro exemplo aqui dos amigos do forum.
Problema que encontrei nele, se eu for filtrar por número ele não encontra, por texto ele encontra normalmente.

Segue

Código: Selecionar todos

[b]'1ª opção[/b]
Sub FiltroListView()
         Dim lastRow As Long
        Dim lastResultRow As Long
        Dim X As Long
       
        ' Verifica qual a ultima célula preenchida
        lastRow = Plan1.Cells(Rows.Count, 1).End(xlUp).Row
                
        lastResultRow = 2 'linha resultado
        
        ' Ciclo em todas as linhas
        For X = 2 To lastRow '1 Linha dados pequisa
        
           ' verifica se o valor é igual ao da pesquisa
           If Plan1.Cells(X, 2).Value = Me.ComboBox_FNome.Value _
           Or Plan1.Cells(X, 4).Value = Me.ComboBox_FTipos.Value Or _
            Plan1.Cells(X, 3).Value = ComboBox_FRegistros Then  ' coluna pequisa
           
              ' Copia os valores
                ListView1.ListItems.Add 1, , Plan1.Cells(X, 1).Value
                ListView1.ListItems(1).ListSubItems.Add 1, , Plan1.Cells(X, "b").Value
                ListView1.ListItems(1).ListSubItems.Add 2, , Plan1.Cells(X, "c").Value
                ListView1.ListItems(1).ListSubItems.Add 3, , Plan1.Cells(X, "d").Value
                ListView1.ListItems(1).ListSubItems.Add 4, , Plan1.Cells(X, "e").Value
                ListView1.ListItems(1).ListSubItems.Add 5, , Plan1.Cells(X, "f").Value
                ListView1.ListItems(1).ListSubItems.Add 6, , Plan1.Cells(X, "g").Value
                ListView1.ListItems(1).ListSubItems.Add 7, , Plan1.Cells(X, "h").Value
                ListView1.ListItems(1).ListSubItems.Add 8, , Plan1.Cells(X, "i").Value
                ListView1.ListItems(1).ListSubItems.Add 9, , Plan1.Cells(X, "j").Value
                ListView1.ListItems(1).ListSubItems.Add 10, , Plan1.Cells(X, "k").Value
                'lastResultRow = lastResultRow + 1
           End If
        Next
    
End Sub
O segundo exemplo que tenho é pelo método Find. Eu consegui fazer ele encontrar número, mas o problema que ele encontra o primeiro e encerra a função, e eu preciso de todos que contenham os números. Que ele dê um loop, um tipo FindNext....

Segue

Código: Selecionar todos

[b]'2ª opção[/b]
Sub FiltroListView()
 
        Dim lastRow As Long
        Dim lastResultRow As Long
        Dim X As Long
        Dim c As Range
        
       
      
    With Worksheets("Sistema").Range("C:C")
    Set c = .Find(ComboBox_FRegistros.Value, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
       
        If Not c Is Nothing Then
           
                ' Copia os valores
                ListView1.ListItems.Add 1, , c.Offset(0, -2).Value
                ListView1.ListItems(1).ListSubItems.Add 1, , c.Offset(0, -1).Value
                ListView1.ListItems(1).ListSubItems.Add 2, , c.Offset(0, 0).Value
                ListView1.ListItems(1).ListSubItems.Add 3, , c.Offset(0, 1).Value
                ListView1.ListItems(1).ListSubItems.Add 4, , c.Offset(0, 2).Value
                ListView1.ListItems(1).ListSubItems.Add 5, , c.Offset(0, 3).Value
                ListView1.ListItems(1).ListSubItems.Add 6, , c.Offset(0, 4).Value
                ListView1.ListItems(1).ListSubItems.Add 7, , c.Offset(0, 5).Value
                ListView1.ListItems(1).ListSubItems.Add 8, , c.Offset(0, 6).Value
                ListView1.ListItems(1).ListSubItems.Add 9, , c.Offset(0, 7).Value
                ListView1.ListItems(1).ListSubItems.Add 10, , c.Offset(0, 8).Value
                'lastResultRow = lastResultRow + 1
     End If
   
    End With
         
End Sub
É claro que eu prefiro a solução do segundo exemplo, pois assim podemos implementar também para outros valores iguais...

Aguardo a colaboração de todos.

Abs.


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
Mauro Coutinho
Jedi
Jedi
Mensagens: 1561
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: Listview - Filtrar valores numéricos

Mensagem por Mauro Coutinho »

Rafael, não exatamente em qual das colunas estão os Números, mas para contornar geral, altere a Propriedade Value para Text, ficando assim na primeira opção :

If Plan1.Cells(X, 2).Value = Me.ComboBox_FNome.Text _
Or Plan1.Cells(X, 4).Value = Me.ComboBox_FTipos.
Text Or _
Plan1.Cells(X, 3).Value = ComboBox_FRegistros.
Text Then

[]s


Rafa - Info
Colaborador
Colaborador
Mensagens: 24
Registrado em: Ter Nov 16, 2010 6:33 pm

Re: Listview - Filtrar valores numéricos

Mensagem por Rafa - Info »

Bom dia Mauro, perfeito, funcionou 100%, estava tentando formatar o combobox para número.

Seguindo o primeiro exemplo, conseguimos buscar somente valores exatos? Ou há alguma forma de buscar aproximados?

Obrigado pela atenção.

Abs.


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