Notifications
Clear all

Ajuda com pesquisa ListBox

4 Posts
2 Usuários
0 Reactions
804 Visualizações
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Olá amigos, como faço para que o código abaixo pesquise em mais de uma coluna e que a linha 1 seja sempre mostrada como cabeçalho?

Option Explicit
'Autor: Tomás Vásquez. - Santo André-SP-BR
'       tomas.vasquez.sites.uol.com.br
'       tomas.vasquez.blog.uol.com.br
'       tomas.vasquez@uol.com.br
'Data:  15 de Janeiro de 2007.
'Versão: 1.00 - Em VBA Microsoft Excel 2003
'Fórum: http://www.juliobattisti.com.br/forum
'       [Excel Avançado - Macros e Vba]
Private TextoDigitado As String

Private Sub TextBox1_Change()
    TextoDigitado = TextBox1.Text
    Call PreencheLista
End Sub

Private Sub UserForm_Initialize()
    Call PreencheLista
End Sub

Private Sub PreencheLista()
    Dim ws As Worksheet
    Dim i As Integer
    Dim TextoCelula As String
    Set ws = ThisWorkbook.Worksheets(1)
    i = 1
    ListBox1.Clear
    With ws
        While .Cells(i, 1).Value <> Empty
            TextoCelula = .Cells(i, 1).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(i, 1)
            End If
            i = i + 1
        Wend
    End With
End Sub
 
Postado : 30/09/2013 8:19 am
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Alguém pode me dar essa força?

 
Postado : 30/09/2013 11:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alguém pode me dar essa força?

Na rotina Private Sub PreencheLista(), temos :

Dim i As Integer ' Atribuimos o Tipo da Variavel "i" como numerico
Depois atribuímos um Valor Inicial a esta Variável :
i = 1
nesta Incrementamos a linha:
i = i + 1

Nesta linha:
While .Cells(i, 1).Value <> Empty
O i Representa a Linha, e o 1 a Coluna, e aqui ela está fixa.

Então para Incrementar a Coluna, devemos transforma-la em uma Variável, depois precisamos da quantidade de Colunas para poder incrementar a Variável :
Se quiser pesquisar na Coluna 2, ficaria :
While .Cells(i, 2).Value <> Empty
Alterando somente o numero da Coluna.

Para criarmos uma Variável para a Coluna, adicionariámos o seguinte :
Dim sCol As Long
sCol = 1

e na Instrução de pesquisa ficaria :
While .Cells(i, sCol).Value <> Empty

Desta forma para podermos incrementar tanto a Linha e a Coluna corretamente dentro do While, precisamos de mais detalhes, como a disposição dos Dados, layout, tipo de dados, etc... O ideal é anexar um modelo reduzido (compactado *.Rar; *.Zip) para poder se analisar adequadamente.

[]s

 
Postado : 30/09/2013 7:05 pm
(@bilokas)
Posts: 168
Reputable Member
Topic starter
 

Obrigado, sua explicação me ajudou a resolver!

 
Postado : 01/10/2013 8:42 am