Busca com textbox e...
 
Notifications
Clear all

Busca com textbox e resultado em listbox

6 Posts
3 Usuários
0 Reactions
1,104 Visualizações
(@rocha89)
Posts: 4
Active Member
Topic starter
 

Boa Tarde pessoal eu estou começando a mexer com VBA e SQL e configurando uma rotina de busca eu errei em algum lugar, fiz seguindo um tutorial de video no youtube.
Após fazer essa rotina e testando o botão ela até funcionou aparentemente mas o problema eh q minha planilha de excel possui uma coluna onde repete muitos nomes e oque meu buscador faz é me dar somente a primeira linha com a palavra encontrada, não entendi onde ela está errada, se algum de você puder me ajuadr eu agradeço muito.
obrigado.
Abaixo esta a rotina de busca

Private Sub buscar_Click()

Range("B1").Select

Dim linhaatual As Integer

If Textbox1.Text <> "" Then

contador = 0

Do While ActiveCell.Value <> Textbox1.Value And contador < 300

ActiveCell.Offset(1, 0).Select

contador = contador + 1

Loop

End If

If ActiveCell.Value = Textbox1.Value Then

ListBox1.Clear

linhaatual = ActiveCell.Row
ListBox1.AddItem Plan1.Range("B" & linhaatual)

ListBox1.List(ListBox1.ListCount - 1, 1) = Plan1.Range("c" & linhaatual)
ListBox1.List(ListBox1.ListCount - 1, 2) = Plan1.Range("d" & linhaatual)
ListBox1.List(ListBox1.ListCount - 1, 3) = Plan1.Range("e" & linhaatual)

Else

MsgBox "Linha não encontrada", vbCritical, "erro"

End If

End Sub

 
Postado : 18/03/2014 12:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Enquanto isso poste seu arquivo modelo compactado!

Att

 
Postado : 18/03/2014 12:50 pm
(@rocha89)
Posts: 4
Active Member
Topic starter
 

aqui está a planilha

 
Postado : 18/03/2014 1:08 pm
(@rocha89)
Posts: 4
Active Member
Topic starter
 

por favor alguém pode me ajudar?

 
Postado : 24/03/2014 5:14 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Cara, dei uma mexida no teu código:

Private Sub buscar_Click()

ListBox1.Clear

Range("B1").Select

Dim linhaatual As Integer
Dim ultimalinha As Integer

If Textbox1.Text <> "" Then
    ultimalinha = Range("A" & Rows.Count).End(xlUp).Row
    contador = 0
    Do While contador <= ultimalinha
        ActiveCell.Offset(1, 0).Select
        contador = contador + 1
        If ActiveCell.Value = Textbox1.Value Then
            'ListBox1.Clear

            linhaatual = ActiveCell.Row
            ListBox1.AddItem Plan1.Range("B" & linhaatual)
    
            ListBox1.List(ListBox1.ListCount - 1, 1) = Plan1.Range("c" & linhaatual)
            ListBox1.List(ListBox1.ListCount - 1, 2) = Plan1.Range("d" & linhaatual)
            ListBox1.List(ListBox1.ListCount - 1, 3) = Plan1.Range("e" & linhaatual)
        Else
        'MsgBox "Linha não encontrada", vbCritical, "erro"
        End If
    Loop
End If
End Sub

Cara, primeiramente, vc sabe seguir o código linha a linha? (Use F8) Isso ajuda a achar erros de lógica.

O maior problema está no teu loop (Do loop).

Veja, vc fez o loop terminar, e só depois disso vc retorna as informações para o listbox. Com isso, a parte em que retorna essas informações só vai ser executada uma única vez, trazendo um único resultado.

Outra coisa, eu mexi no teu loop, porque vc estava contando até a linha 300, porém, o loop interrompia no primeiro valor diferente da pesquisa (ActiveCell.Value <> Textbox1.Value). Da forma como fiz, tirei essa parte, e coloquei ele rodando até a última linha existente.

Outra coisa: como vc está aprendendo, veja alguma coisa sobre indentação. Eu fiz no teu código. Fica mais fácil de se localizar. Compare com o teu, tem 2 "ifs", e 2 "end ifs", qual corresponde a qual? No teu código fica mais chato de ver, no meu, basta acompanhar verticalmente.

Também tirei aquela msgbox lá. Imagine o um loop rodando em 300 linhas e trazendo umas 200 msgbox com a mesma informação. Haja paciência, rs.

No mais, dá uma olhada nos 2, compare as diferenças, e se precisar, só perguntar.
Abraço

 
Postado : 24/03/2014 5:44 am
(@rocha89)
Posts: 4
Active Member
Topic starter
 

muito obrigado meu amigo, vc me ajudou de uma maneira imensa.
obrigado!!!

 
Postado : 24/03/2014 7:55 am