none
Busca de Valores VBA Excel RRS feed

  • Pergunta

  • Boa noite

    Tenho uma planilha que eu uso o formulario vba para trazer resultados de pesquisa, porém tem o seguinte:

    Eu busco um nome e ela me responde com resultados que contenha esse nome, mas o nome é referente a um pedido que tem varios sub itens em outras linhas, eu consegui fazer que o formulário traga os resultados da linha 1, porém preciso de ajuda para trazer os resultados no mesmo  formulário das demais linhas exemplo 2, 3, 6, 7.

    Segue os codigos que estou usando:

    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

    segunda-feira, 5 de março de 2018 23:31

Todas as Respostas