Página 1 de 1

FILTRO NO ListView

Enviado: Ter Abr 30, 2019 1:07 pm
por Zeca1456
Ao iniciar a UserForm, o ListView é carregado automaticamente.
Tenho uma caixa de texto (txtPesquisa) ao digitar uma letra o sistema faz um filtro no ListView mostrando apenas os clientes cujo o nome se inicia com a letra que foi digitada.
Quero criar um código para que o sistema mostre uma mensagem quando não encontrar nenhum cliente cuja a letra foi digitada na caixa de texto. Será que você poderia por favor me ajudar? Muito obrigado.
Início da minha sub:
Public Sub Pesquisa() 'Procedimento para o Search
Dim C As Range
Dim li As listItem
Dim sSearch As String
ListView1.ListItems.Clear
For Each C In Range("NomeDefinidoCliente")
If C.Text Like txtPesquisa & "*" Then
Set li = ListView1.ListItems.Add(Text:=C.Offset(, -2).Value) ' ID-
li.ListSubItems.Add Text:=C.Offset(, -1).Value ' Account
li.ListSubItems.Add Text:=C.Offset(, 0).Value ' Name
li.ListSubItems.Add Text:=C.Offset(, 1).Value ' Address
li.ListSubItems.Add Text:=C.Offset(, 2).Value ' Cidade
li.ListSubItems.Add Text:=C.Offset(, 3).Value ' Contato
li.ListSubItems.Add Text:=C.Offset(, 4).Value ' Telefone
li.ListSubItems.Add Text:=C.Offset(, 5).Value ' Email
End If
Next C
End Sub

Re: FILTRO NO ListView

Enviado: Ter Abr 30, 2019 3:17 pm
por srobles
Zeca1456,

Substitua o código que enviou pelo que segue abaixo :

Código: Selecionar todos

Public Sub Pesquisa() 'Procedimento para o Search
    Dim C As Range
    Dim li As listItem
    Dim sSearch As String
    
    ListView1.ListItems.Clear
        For Each C In Range("NomeDefinidoCliente")
            If C.Text Like txtPesquisa & "*" Then
                Set li = ListView1.ListItems.Add(Text:=C.Offset(, -2).Value) ' ID-
                li.ListSubItems.Add Text:=C.Offset(, -1).Value ' Account
                li.ListSubItems.Add Text:=C.Offset(, 0).Value ' Name
                li.ListSubItems.Add Text:=C.Offset(, 1).Value ' Address
                li.ListSubItems.Add Text:=C.Offset(, 2).Value ' Cidade
                li.ListSubItems.Add Text:=C.Offset(, 3).Value ' Contato
                li.ListSubItems.Add Text:=C.Offset(, 4).Value ' Telefone
                li.ListSubItems.Add Text:=C.Offset(, 5).Value ' Email
            Else
                MsgBox "Cliente não encontrado / cadastrado!", vbExclamation, "Erro"
                Exit Sub
            End If
        Next C
End Sub
Como não forneceu maiores detalhes da sua necessidade, espero que esta pequena mudança atenda sua demanda.

Abs