Notifications
Clear all

VBA Busca de Valores

3 Posts
3 Usuários
0 Reactions
698 Visualizações
(@murilog)
Posts: 0
New Member
Topic starter
 

Boa noite,

Tenho uma planilha que eu busco resultados pesquisando uma palavra e eu consegui trazer os resultados somente de uma linha exemplo linha 1, mas eu preciso trazer os demais resultados dentro do mesmo pedido, exemplo 2, 3, 5, 6, segue meu codigo alguem pode me ajudar.

Public MatrizResultados As Variant
Public Total_Ocorrencias As Long


Private Sub btn_Procurar_Click()

    If Me.txt_Procurar.Text = "" Then
        MsgBox "Digite um valor para a pesquisa"
    Else
        Call ProcuraPersonalizada(Me.txt_Procurar.Text)
    End If
    
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Label21_Click()

End Sub

Private Sub Label22_Click()

End Sub

Private Sub Label25_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub Label5_Click()

End Sub

Private Sub Label6_Click()

End Sub

Private Sub SpinButton1_Change()
Dim Linha As Long
Dim TotalOcorrencias As Long


    TotalOcorrencias = SpinButton1.Max + 1
    Linha = MatrizResultados(SpinButton1.Value)
    
    Label_Registros_Contador.Caption = SpinButton1.Value + 1 & " de " & TotalOcorrencias
    TextBox1.Text = Plan1.Cells(Linha, 1).Value
    TextBox2.Text = Plan1.Cells(Linha, 50).Value
    TextBox3.Text = Plan1.Cells(Linha, 3).Value
    TextBox4.Text = Plan1.Cells(Linha, 4).Value
    TextBox5.Text = Plan1.Cells(Linha, 5).Value
    TextBox6.Text = Plan1.Cells(Linha, 51).Value
    TextBox7.Text = Plan1.Cells(Linha, 8).Value
    TextBox8.Text = Plan1.Cells(Linha, 11).Value
    TextBox9.Text = Plan1.Cells(Linha, 7).Value
    TextBox10.Text = Plan1.Cells(Linha, 16).Value
    TextBox11.Text = Plan1.Cells(Linha, 12).Value
    TextBox12.Text = Plan1.Cells(Linha, 13).Value
    TextBox13.Text = Plan1.Cells(Linha, 14).Value
    TextBox14.Text = Plan1.Cells(Linha, 17).Text
    TextBox15.Text = Plan1.Cells(Linha, 20).Value
    TextBox16.Text = Plan1.Cells(Linha, 24).Value
    TextBox17.Text = Plan1.Cells(Linha, 25).Value
    TextBox18.Text = Plan1.Cells(Linha, 21).Value
    TextBox19.Text = Plan1.Cells(Linha, 22).Text
    TextBox20.Text = Plan1.Cells(Linha, 23).Text
    TextBox21.Text = Plan1.Cells(Linha, 26).Value
    TextBox22.Text = Plan1.Cells(Linha, 27).Value
    TextBox23.Text = Plan1.Cells(Linha, 28).Value
    
    
End Sub


Private Sub ProcuraPersonalizada(ByVal TermoPesquisado As String)
Dim Busca As Range
Dim Primeira_Ocorrencia As String
Dim Resultados As String

    'Executa a busca
    Set Busca = Plan1.Cells.Find(What:=TermoPesquisado, After:=Range("A1"), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    
    'Caso tenha encontrado alguma ocorrência...
    If Not Busca Is Nothing Then
    
        Primeira_Ocorrencia = Busca.Address
        Resultados = Busca.Row  'Lista o primeiro resultado na variavel
    
        'Neste loop, pesquisa todas as próximas ocorrências para
        'o termo pesquisado
        Do
            Set Busca = Plan1.Cells.FindNext(After:=Busca)
        
            'Condicional para não listar o primeiro resultado
            'pois já foi listado acima
            If Not Busca.Address Like Primeira_Ocorrencia Then
                Resultados = Resultados & ";" & Busca.Row
            End If
        Loop Until Busca.Address Like Primeira_Ocorrencia
    
    
        MatrizResultados = Split(Resultados, ";")
        
        'Atualiza dados iniciais no formulário
        SpinButton1.Max = UBound(MatrizResultados)  'Valor maximo do seletor de registros
        
        'habilita o seletor de registro
        SpinButton1.Enabled = True
        
        'indicador do seletor de registros
        Label_Registros_Contador.Caption = "1 de " & UBound(MatrizResultados) + 1
        
        
        'Box com o conteudo encontrado
        TextBox1.Text = Plan1.Cells(MatrizResultados(0), 1).Value
        TextBox2.Text = Plan1.Cells(MatrizResultados(0), 50).Value
        TextBox3.Text = Plan1.Cells(MatrizResultados(0), 3).Value
        TextBox4.Text = Plan1.Cells(MatrizResultados(0), 4).Value
        TextBox5.Text = Plan1.Cells(MatrizResultados(0), 5).Value
        TextBox6.Text = Plan1.Cells(MatrizResultados(0), 51).Value
        TextBox7.Text = Plan1.Cells(MatrizResultados(0), 8).Value
        TextBox8.Text = Plan1.Cells(MatrizResultados(0), 11).Value
        TextBox9.Text = Plan1.Cells(MatrizResultados(0), 7).Value
        TextBox10.Text = Plan1.Cells(MatrizResultados(0), 16).Value
        TextBox11.Text = Plan1.Cells(MatrizResultados(0), 12).Value
        TextBox12.Text = Plan1.Cells(MatrizResultados(0), 13).Value
        TextBox13.Text = Plan1.Cells(MatrizResultados(0), 14).Value
        TextBox14.Text = Plan1.Cells(MatrizResultados(0), 17).Value
        TextBox15.Text = Plan1.Cells(MatrizResultados(0), 20).Value
        TextBox16.Text = Plan1.Cells(MatrizResultados(0), 24).Value
        TextBox17.Text = Plan1.Cells(MatrizResultados(0), 25).Value
        TextBox18.Text = Plan1.Cells(MatrizResultados(0), 21).Value
        TextBox19.Text = Plan1.Cells(MatrizResultados(0), 22).Text
        TextBox20.Text = Plan1.Cells(MatrizResultados(0), 23).Text
        TextBox21.Text = Plan1.Cells(MatrizResultados(0), 26).Value
        TextBox22.Text = Plan1.Cells(MatrizResultados(0), 27).Value
        TextBox23.Text = Plan1.Cells(MatrizResultados(0), 28).Value
    
    Else    'Caso nada tenha sido encontrado, exibe mensagem informativa
    
        SpinButton1.Enabled = False     'desabilita o seletor de registros
        Label_Registros_Contador.Caption = ""   'zera os resultados encontrados
        'limpa os campos do formulário
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        TextBox6.Text = ""
        TextBox7.Text = ""
        TextBox8.Text = ""
        TextBox9.Text = ""
        TextBox10.Text = ""
        TextBox11.Text = ""
        TextBox12.Text = ""
        TextBox13.Text = ""
        TextBox14.Text = ""
        TextBox15.Text = ""
        TextBox16.Text = ""
        TextBox17.Text = ""
        TextBox18.Text = ""
        TextBox19.Text = ""
        TextBox20.Text = ""
        TextBox21.Text = ""
        TextBox22.Text = ""
        TextBox23.Text = ""
        MsgBox "Nenhum resultado para '" & TermoPesquisado & "' foi encontrado."
    
    End If
    
End Sub

Private Sub TextBox1_Change()

End Sub



Private Sub TextBox19_Change()

End Sub

Private Sub TextBox23_Change()

End Sub

Private Sub txt_Procurar_Change()

End Sub

Private Sub UserForm_Initialize()

    SpinButton1.Enabled = False
    Label_Registros_Contador.Caption = ""
    
End Sub
 
Postado : 05/03/2018 5:43 pm
(@mprudencio)
Posts: 0
New Member
 

Disponibilize a planiha com alguns dados.

 
Postado : 05/03/2018 7:46 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

MuriloG ,

Bom dia!

Seja muito bem vindo ao fórum.

Para aproveitar ao máximo o fórum e sempre manter o mesmo de forma organizada, sugiro ler os tópico da regras abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Da próxima vez que postar código VBA aqui no fórum, solicitamos, por gentileza, fazer uso da ferramenta CODE localizada logo no início da caixa de mensagens.

 
Postado : 06/03/2018 4:18 am