Peço até desculpas antes, pois já estou abusando da boa vontade dos amigos do fórum, principalmente o Kuroi, mas já quebrei a cabeça demais com isso. Vi uma pesquisa na internet, que ao digitar os dados no TEXTBOX o LIST filtra em tempo real. Tentei adaptar para minha situação, mas fiz algo errado e gostaria de entender o que há de errado, para primeiramente aprender essa pesquisa que achei muito interessante e depois incluir ela no meu projeto. Lembrando que no exemplo que vi, ela filtrava num LIST com apenas uma coluna, o meu tem 3 colunas.
Private Sub TextBox2_Change()
TextBox2.Value = UCase(TextBox2.Value)
Pesquisar
Dim i As Long
Dim sFind As String
sFind = TextBox2.Text
If Len(sFind) = 0 Then
ListBox1.ListIndex = -1
ListBox1.TopIndex = 0
Else
For i = 0 To ListBox1.ListCount - 1
If UCase(Left(ListBox1.List(i), Len(sFind))) = UCase(sFind) Then
Pergunta
Michelle Alves
Peço até desculpas antes, pois já estou abusando da boa vontade dos amigos do fórum, principalmente o Kuroi, mas já quebrei a cabeça demais com isso. Vi uma pesquisa na internet, que ao digitar os dados no TEXTBOX o LIST filtra em tempo real. Tentei adaptar para minha situação, mas fiz algo errado e gostaria de entender o que há de errado, para primeiramente aprender essa pesquisa que achei muito interessante e depois incluir ela no meu projeto. Lembrando que no exemplo que vi, ela filtrava num LIST com apenas uma coluna, o meu tem 3 colunas.
Private Sub TextBox2_Change()
TextBox2.Value = UCase(TextBox2.Value)
Pesquisar
Dim i As Long
Dim sFind As String
sFind = TextBox2.Text
If Len(sFind) = 0 Then
ListBox1.ListIndex = -1
ListBox1.TopIndex = 0
Else
For i = 0 To ListBox1.ListCount - 1
If UCase(Left(ListBox1.List(i), Len(sFind))) = UCase(sFind) Then
UserForm2.ListBox1.AddItem Range("C" & i).Value
UserForm2.ListBox1.List(linha, 1) = Range("B" & i).Value
UserForm2.ListBox1.List(linha, 2) = Range("D" & i).Value
ListBox1.TopIndex = i
ListBox1.ListIndex = i
Exit For
End If
Next i
End If
End Sub
Sub Pesquisar()
Dim PrimEndereço, C
ListBox1.Clear
With Range("a2:d500") 'seu intervalo de pesquisa
Set C = .Find(TextBox2, LookIn:=xlValues)
If Not C Is Nothing Then
PrimEndereço = C.Address
Do
ListBox1.AddItem C
UserForm2.ListBox1.AddItem Range("C" & i).Value
UserForm2.ListBox1.List(linha, 1) = Range("B" & i).Value
UserForm2.ListBox1.List(linha, 2) = Range("D" & i).Value
Set C = .FindNext©
Loop While Not C Is Nothing And C.Address <> PrimEndereço
End If
End With
End Sub
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.