Ir ao conteúdo
  • Cadastre-se

Excel filtro duplo em listbox.


Posts recomendados

Bom dia prezados,

Estou batendo cabeça e acredito q possam me ajudar.

Tenho uma planilha com dados diversos, colunas com cidades e nomes.

Criei um listbox com filtro vinculado a um textbox. Neste filtro eu digito o nome e ele carrega na listbox.

 

Há possibilidade de ao realizar a consulta pelo nome, que esta consulta seja realizada apenas de uma cidade em especifico? Ex. apenas os Pedros de Londrina, e nao todos os pedros do Paraná inteiro, como acontece hj?

 

Segue codigo q tenho ate agora.

 

CODIGO PARA CARREGAR O LISTBOX:

Private Sub ListBox4_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim Employee As Variant
      Dim Name As String
     Dim firstaddress As String
            
     Employee = Empty
  
      With ActiveSheet.Range("a1:a10000")
      
           Name = ListBox4.Value
           Set Employee = .Find(What:=Name, LookIn:=xlValues)
            If Not Employee Is Nothing Then Employee.Rows.EntireRow.Select Else Exit Sub

End Sub

 

 

 

CÓDIGO ATRELADO A TEXTBOX ONDE FAÇO A PROCURA:

Private Sub txt2_Change()

Dim guia As Worksheet
Dim valor_celula, linha, linhalistbox As Integer


Set guia = Plan1

linhalistbox = 0
linha = 2
ListBox4.Clear

With guia

While .Cells(linha, 2).Value <> Empty

valor_celula = .Cells(linha, 9).Value        " onde esta os nomes
If UCase(Left(valor_celula, Len(txt2.Text))) = UCase(txt2.Text) Then

With ListBox4
.AddItem

.List(linhalistbox, 0) = guia.Cells(linha, 1)
.List(linhalistbox, 1) = guia.Cells(linha, 2)
.List(linhalistbox, 2) = guia.Cells(linha, 4)
.List(linhalistbox, 3) = guia.Cells(linha, 9)
.List(linhalistbox, 4) = guia.Cells(linha, 22)
.List(linhalistbox, 5) = guia.Cells(linha, 25)
.List(linhalistbox, 6) = guia.Cells(linha, 39)
.List(linhalistbox, 7) = guia.Cells(linha, 40)
.List(linhalistbox, 8) = guia.Cells(linha, 40)


End With


linhalistbox = linhalistbox + 1
End If

linha = linha + 1


Wend

End With

End sub

 

Grato desde já pela atenção.

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Ola amigo, obrigado pelo retorno. Entendi seu arquivo, mas acho q nao me expressei bem talvez. O que preciso e q faça um duplo filtro, neste seu arquivo temos a opção de escolher o tipo de filtro a fazer.

Segue uma planilha com o q preciso.:

Ex. Quando eu começar a digitar o CPF, 12... ele seleciona todas as cidades, preciso que ao digitar 12... ele me traga apenas as de certo municipio (ex. apenas Toledo., e nao todos os municipios que tem pessoas com cpf começando com 12..)

 

 

 

Teste.xlsm

Link para o comentário
Compartilhar em outros sites

@osvaldomp, não abusando , mas há possibilidade de adaptar algo a este código?

Hj ao realizar a procura do que foi digitado no textbox, ele procura e retorna ao listbox4 apenas os dados que encontra até uma linha em branco. Quando ele encontra essa linha em branco carrega apenas ate ela.

Ha como fazer que ele ignore a linha em branco e carregue todos os dados?

Obrigado.

 

Private Sub txt1_Change()


Dim guia As Worksheet
Dim valor_celula, linha, linhalistbox As Integer
Set guia = Plan1
linhalistbox = 0
linha = 2
ListBox4.Clear
With guia

While .Cells(linha, 2).Value <> Empty

 

valor_celula = .Cells(linha, 3).Value
If UCase(Left(valor_celula, Len(txt1.Text))) = UCase(txt1.Text) Then ' campus

 

valor_celula = .Cells(linha, 9).Value
If UCase(Left(valor_celula, Len(txt2.Text))) = UCase(txt2.Text) Then ' cpf


valor_celula = .Cells(linha, 39).Value
If UCase(Left(valor_celula, Len(txt3.Text))) = UCase(txt3.Text) Then ' data

valor_celula = .Cells(linha, 40).Value
If UCase(Left(valor_celula, Len(txt4.Text))) = UCase(txt4.Text) Then ' situacao

With ListBox4
.AddItem

.List(linhalistbox, 0) = guia.Cells(linha, 1)
.List(linhalistbox, 1) = guia.Cells(linha, 2)
.List(linhalistbox, 2) = guia.Cells(linha, 4)
.List(linhalistbox, 3) = guia.Cells(linha, 9)
.List(linhalistbox, 4) = guia.Cells(linha, 22)
.List(linhalistbox, 5) = guia.Cells(linha, 25)
.List(linhalistbox, 6) = guia.Cells(linha, 39)
.List(linhalistbox, 7) = guia.Cells(linha, 40)

End With
linhalistbox = linhalistbox + 1
End If
End If
End If
End If

linha = linha + 1

Wend

End With

End Sub

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...