Notifications
Clear all

Procura no ListBox

10 Posts
3 Usuários
0 Reactions
1,344 Visualizações
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Pessoal,
Criei um ListBox e quando eu faço uma busca ele limpa o listbox mas não retorna o valor pesquisado, podem me ajudar com isso, segue o código:

Option Explicit
Private valor_pesquisado As String


Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim valor_lista As Integer
Dim selecao As Integer

selecao = ListBox1.ListIndex
valor_lista = ListBox1.List(selecao, 0)

frmG13.txtCodCliente = valor_lista
frmG13.txtCodCliente.SetFocus
frmG13.txtNomeCliente.SetFocus

Unload Me


End Sub

Private Sub TextBox1_Change()
valor_pesquisado = TextBox1.Text
Call buscar_valores
End Sub

Private Sub UserForm_Initialize()
Call buscar_valores
End Sub

Private Sub buscar_valores()

Dim guia As Worksheet
Dim linha As Integer
Dim coluna As Integer
Dim linhalistbox As Integer
Dim valor_celula As String
Dim conta_registros As Integer
Set guia = ThisWorkbook.Worksheets(1)


linha = 4
coluna = 2
linhalistbox = 0
conta_registros = 0

ListBox1.Clear

With guia
While .Cells(linha, coluna).Value <> Empty
valor_celula = .Cells(linha, coluna).Value

If UCase(Left(valor_celula, Len(valor_pesquisado))) = UCase(valor_pesquisado) Then

With Cli_Cadastrados.ListBox1
.AddItem
.List(linhalistbox, 0) = Sheets("Plan1").Cells(linha, 2)
.List(linhalistbox, 1) = Sheets("Plan1").Cells(linha, 3)
linhalistbox = linhalistbox + 1
conta_registros = conta_registros + 1
End With

End If
linha = linha + 1
Wend
End With

lbl_registros = conta_registros

End Sub
 
Postado : 26/10/2016 11:34 am
(@mprudencio)
Posts: 0
New Member
 

Pq nao faz a busca na planilha e carrega apenas o resultado

 
Postado : 26/10/2016 12:09 pm
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Como eu faço isso?

 
Postado : 26/10/2016 12:31 pm
(@basole)
Posts: 487
Reputable Member
 

Veja se este exemplo lhe atende:
busca por um item contido na lista do listbox:

 Sub Teste_Pesquisa_No_ListBox()
    Dim i As Long
    
    i = SearchString(TextBox1.Text, Me.ListBox1.List)
    If i <> -1 Then Me.ListBox1.Selected(i) = True
    
End Sub

E em um modulo padrão:

Function SearchString(mysearch As String, mylist As Variant) As Long

    Dim itm As Variant, idx As Long: idx = 0
    If IsArray(mylist) Then
        For Each itm In mylist
            If mysearch = itm Then
                SearchString = idx: Exit Function
            End If
            idx = idx + 1
        Next
        SearchString = -1
    End If
End Function

fonte: http://stackoverflow.com/questions/28998969/why-listbox-doesnt-have-a-findstring-method-in-excel-vba

 
Postado : 26/10/2016 1:00 pm
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Obrigado Basole, mas não dá pq quando eu der dois cliques eu preciso que ele carregue os dados no formulário

 
Postado : 26/10/2016 2:44 pm
(@basole)
Posts: 487
Reputable Member
 

O que postei é só um exemplo.

E o primeiro passo para voce poder adaptar ao codigo do seu formulario.

Se não está conseguindo, disponibilize seu arquivo ou um modelo bem proximo do original, com alguns dados ficticios.

Obrigado.

 
Postado : 26/10/2016 2:51 pm
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Basole obrigado, eu não entendo muito o que eu fiz foi olhando um vídeo no youtube, por isso o que vc me mandou eu não entendi, mas se puder me ajudar ficarei muito grato, meu projeto está em anexo, o formulário é o Cli_Cadastrados.

Desde já agradeço!

 
Postado : 27/10/2016 7:20 am
(@basole)
Posts: 487
Reputable Member
 

Andersonrj,

Eu não utilizei o codigo que postei acima, e sim ajustei o seu codigo usando a funcao find com pesquisa na coluna "c" da plan1.

Segue em anexo:

 
Postado : 27/10/2016 10:10 am
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Cara muito obrigado, me ajudou muito! Valeu mesmo!

 
Postado : 27/10/2016 12:25 pm
(@andersonrj)
Posts: 0
New Member
Topic starter
 

Basole

Meu amigo, eu precisava fazer um formulário exatamente como este pra gerar relatório, copiei o código que vc fez e funcionou muito bem, mas quando clico duas vezes ele retorna o código, mas não retorna pra mim o nome do cliente, poderia verificar no que estou errando por favor, o formulário é o "LocalizaRelatorio":

 
Postado : 27/10/2016 1:35 pm