Pesquisa Personalizada Simples 3 – Parte Final

Caros leitores, chego hoje ao capítulo final desta trilogia (risos).
Bem, para aqueles que ainda não leram os artigos anteriores, sintam-se a vontade. Acessem pelos links abaixo:
Parte 1 – Pesquisa Personalizada Simples
Parte 2 – Pesquisa Personalizada Simples – A Missão
Para concluir esta série de artigos sobre busca personalizada através de macro, vamos incrementar o código já disponibilizado com as funcionalidades de Adição de dados, Alteração de dados e Exclusão de dados. Esta tem sido uma grande solicitação dos leitores que atenderei com prazer.
Na verdade, o código inicial de pesquisa, que nada mais é que uma recuperação de dados. Ou seja, esta ação em um banco de dados chamamos de “seleção de dados”. E agora vamos incluir as ações de inserção, edição e exclusão de dados. Com isso, podemos resumir que estamos criando um simples controle de banco de dados.
É claro que, não chega nem perto de um gererenciador de banco de dados, mas, quebra o galho para pequenos projetos.
Aproveito a oportunidade para dizer que todos os códigos que disponibilizamos no site são, principalmente para fins educativos, ou seja, os exemplos dados aqui, são apenas exemplos para um maior e melhor entendimento dos leitores, que poderão adaptar o conhecimento adquirido aqui, em seus projetos.
Mas, vamos ao que interessa. Começemos a desenvolver.

Sugiro que baixem o arquivo de exemplo no link no final deste artigo, para que possam acompanhar com mais facilidade o assunto.
Eu indico um ótimo livro que aborda sobre este tema de maneira mais abrangente, inclusive, ensinando como criar um Sistema de Controle de Vendas de uma concessionária fictícia. O livro, Macros para Excel na Prática, pode ser encontrado clicando aqui.
No seu arquivo deve conter pelo menos uma planilha contendo os dados em formato de tabela de dados, ou seja, na primeira linha o cabeçalho das colunas, e nas linhas subsequentes as informações de registros. Apenas isso nesta planilha.
Deve conter também o formulário que será utilizado para a pesquisa e as alterações dos cadastros. (ver arquivo fonte)
A função de pesquisa está mantida como nos exemplos dos artigos anteriores. Foi adicionado um botão para cadastrar novos registros. Os novos registros serão adicionados na primeira linha livre após a última linha de dados já gravados na planilha base de dados.
A função de Alteração de dados, irá, com base no registro que retornou de uma pesquisa feita, efetuar a modificação inserida pelo usuário.
A função de exclusão irá eliminar a linha de registro do cadastro exibido na tela no momento da solicitação pelo usuário ao clicar no botão Excluir.
Funciona como uma tela de cadastro de qualquer programa de cadastros.
Abaixo disponibilizo o código do projeto.
 
Código do Formulário de Busca (frmBusca):

Public MatrizResultadosLinha As Variant
Public MatrizResultadosPlanilha As Variant
Public Total_Ocorrencias As Long
Public sCriterioDaBusca As String
Public sAcaoRequerida As String
Private Sub btn_Adicionar_Click()
    'Definir a ação do comando
    sAcaoRequerida = "Adicionar"
    'Habilitar Botões Salvar/Cancelar
    Call HabilitarControlesParaEdicao(True)
End Sub
Private Sub btn_Cancelar_Click()
    'Definir a ação do comando
    sAcaoRequerida = ""
    'Habilitar Botões Salvar/Cancelar
    Call HabilitarControlesParaEdicao(False)
    'Recarrega os controles com os valores ativos na memória
    Call SpinButton1_Change
    txt_Procurar.Text = sCriterioDaBusca
End Sub
Private Sub btn_Editar_Click()
    'Definir a ação do comando
    sAcaoRequerida = "Editar"
    'Habilitar Botões Salvar/Cancelar
    Call HabilitarControlesParaEdicao(True)
End Sub
Private Sub btn_Excluir_Click()
Dim sLinha As Long
Dim iPlanilha As Integer
    If MsgBox("Tem certeza que deseja eliminar este cadastro do sistema?", vbDefaultButton2 + vbQuestion + vbYesNo, Me.Caption) = vbYes Then
        sLinha = MatrizResultadosLinha(SpinButton1.Value)
        iPlanilha = MatrizResultadosPlanilha(SpinButton1.Value)
        'Exclui a linha do registro
        Sheets(iPlanilha).Rows(sLinha).Delete
        'Salva o arquivo
        ThisWorkbook.Save
        'Recarrega os registros para o formulário
        txt_Procurar.Text = sCriterioDaBusca
        Call ProcuraPersonalizada(sCriterioDaBusca, ComboBox1.Text)
    End If
End Sub
Private Sub btn_Procurar_Click()
    If txt_Procurar.Text = "" Then
        MsgBox "Digite um valor para a pesquisa"
    Else
        sCriterioDaBusca = txt_Procurar.Text
        Call ProcuraPersonalizada(sCriterioDaBusca, ComboBox1.Text)
    End If
End Sub
Private Sub btn_Salvar_Click()
Dim sLinha As Long
Dim iPlanilha As Integer
    'Realiza a ação apropriada
    Select Case sAcaoRequerida
        Case "Adicionar"
            With Sheets(Combo_OndeSalvar.Text)
                sLinha = .Range("A1").SpecialCells(xlLastCell).Row + 1  'Pega a próxima linha vazia para cadastrar novo
                'Grava os novos valores informados no formulário para a planilha base de dados
                .Cells(sLinha, 1).Value = TextBox1.Text
                .Cells(sLinha, 2).Value = TextBox2.Text
                .Cells(sLinha, 3).Value = TextBox3.Text
                .Cells(sLinha, 4).Value = TextBox4.Text
           End With
        Case "Editar"
            sLinha = MatrizResultadosLinha(SpinButton1.Value)
            iPlanilha = MatrizResultadosPlanilha(SpinButton1.Value)
            With Sheets(iPlanilha)
                'Atualiza os dados na linha de registro específica
                .Cells(sLinha, 1).Value = TextBox1.Text
                .Cells(sLinha, 2).Value = TextBox2.Text
                .Cells(sLinha, 3).Value = TextBox3.Text
                .Cells(sLinha, 4).Value = TextBox4.Text
           End With
        Case Else
            Exit Sub
    End Select
    'Definir a ação do comando
    sAcaoRequerida = ""
    'Habilitar Botões Salvar/Cancelar
    Call HabilitarControlesParaEdicao(False)
    'Recarrega os valores da pesquisa para exibir no formulário
    If sCriterioDaBusca <> "" Then
        txt_Procurar.Text = sCriterioDaBusca
        Call ProcuraPersonalizada(sCriterioDaBusca, ComboBox1.Text)
    End If
    'Salva o arquivo
    ThisWorkbook.Save
End Sub
Private Sub SpinButton1_Change()
Dim sLinha As Long
Dim iPlanilha As Integer
Dim TotalOcorrencias As Long
    If IsArray(MatrizResultadosLinha) Then  'Verifica se há informações de busca na matriz de resultados
                                            'Se houver dados retornados da busca, então carrega no formulário
        TotalOcorrencias = SpinButton1.Max + 1
        sLinha = MatrizResultadosLinha(SpinButton1.Value)
        iPlanilha = MatrizResultadosPlanilha(SpinButton1.Value)
        Label_Registros_Contador.Caption = SpinButton1.Value + 1 & " de " & TotalOcorrencias
        With Sheets(iPlanilha)
            Label_PlanBase.Caption = "Em " & .Name
            TextBox1.Text = .Cells(sLinha, 1).Value
            TextBox2.Text = .Cells(sLinha, 2).Value
            TextBox3.Text = .Cells(sLinha, 3).Value
            TextBox4.Text = .Cells(sLinha, 4).Value
        End With
    End If
End Sub
Private Sub ProcuraPersonalizada(ByVal TermoPesquisado As String, ByVal sPesquisarNoCampo As String)
Dim Busca As Range
Dim Primeira_Ocorrencia As String
Dim ResultadosLinha As String
Dim ResultadosPlanilha As String
Dim sSearchInCol As String
Dim arrPesquisarNasPlanilhas As Variant
Dim i As Integer
    'Define a Coluna onde a informação será pesquisada
    sSearchInCol = ConfigColunas(sPesquisarNoCampo)
    'Define as Planilhas onde a informação será pesquisada
    arrPesquisarNasPlanilhas = ConfigPlanilhasBase
    'Inicializa os resultados
    ResultadosLinha = ""
    ResultadosPlanilha = ""
    MatrizResultadosLinha = ""
    MatrizResultadosPlanilha = ""
    'Executa a busca
    For i = 0 To UBound(arrPesquisarNasPlanilhas)
        With Sheets(arrPesquisarNasPlanilhas(i))
            If sSearchInCol = "" Then
                Set Busca = .Cells.Find(What:=TermoPesquisado, After:=.Range("A1"), LookIn:=xlFormulas, _
                    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                    MatchCase:=False, SearchFormat:=False)
            Else
                Set Busca = .Range(sSearchInCol & ":" & sSearchInCol).Find( _
                    What:=TermoPesquisado, _
                    After:=.Range(sSearchInCol & "1"), _
                    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                    MatchCase:=False, SearchFormat:=False)
            End If
            'Caso tenha encontrado alguma ocorrência...
            If Not Busca Is Nothing Then
                Primeira_Ocorrencia = Busca.Address
                ResultadosLinha = ResultadosLinha & IIf((Len(ResultadosLinha) > 0), ";", "") & Busca.Row 'Lista o primeiro resultado na variavel - linha da ocorrência
                ResultadosPlanilha = ResultadosPlanilha & IIf((Len(ResultadosPlanilha) > 0), ";", "") & .Index 'Lista o primeiro resultado na variavel - planilha da ocorrência
                'Neste loop, pesquisa todas as próximas ocorrências para
                'o termo pesquisado
                Do
                    If sSearchInCol = "" Then
                        Set Busca = .Cells.FindNext(After:=Busca)
                    Else
                        Set Busca = .Range(sSearchInCol & ":" & sSearchInCol).FindNext(After:=Busca)
                    End If
                    'Condicional para não listar o primeiro resultado
                    'pois já foi listado acima
                    If Not Busca.Address Like Primeira_Ocorrencia Then
                        ResultadosLinha = ResultadosLinha & ";" & Busca.Row
                        ResultadosPlanilha = ResultadosPlanilha & ";" & .Index
                    End If
                Loop Until Busca.Address Like Primeira_Ocorrencia
            End If
        End With
    Next i
    If Len(ResultadosLinha) > 0 Then    'Se foram encontrados resultados
        MatrizResultadosLinha = Split(ResultadosLinha, ";")
        MatrizResultadosPlanilha = Split(ResultadosPlanilha, ";")
        'Atualiza dados iniciais no formulário
        SpinButton1.Max = UBound(MatrizResultadosLinha)  '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(MatrizResultadosLinha) + 1
        'Box com o conteudo encontrado
        With Sheets(CInt(MatrizResultadosPlanilha(0)))
            Label_PlanBase.Caption = "Em " & .Name
            TextBox1.Text = .Cells(MatrizResultadosLinha(0), 1).Value
            TextBox2.Text = .Cells(MatrizResultadosLinha(0), 2).Value
            TextBox3.Text = .Cells(MatrizResultadosLinha(0), 3).Value
            TextBox4.Text = .Cells(MatrizResultadosLinha(0), 4).Value
        End With
        btn_Editar.Enabled = True
        btn_Excluir.Enabled = True
    Else    'Caso nada tenha sido encontrado, exibe mensagem informativa
        SpinButton1.Enabled = False     'desabilita o seletor de registros
        btn_Editar.Enabled = False
        btn_Excluir.Enabled = False
        Label_Registros_Contador.Caption = ""   'zera os resultados encontrados
        Label_PlanBase.Caption = ""
        'limpa os campos do formulário
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        MsgBox "Nenhum resultado para '" & TermoPesquisado & "' foi encontrado."
    End If
End Sub
Private Sub UserForm_Initialize()
    SpinButton1.Enabled = False
    btn_Editar.Enabled = False
    btn_Excluir.Enabled = False
    Combo_OndeSalvar.Visible = False
    Label_OndeSalvar.Visible = False
    Label_Registros_Contador.Caption = ""
    Call ConfigurarListaDeCampos
End Sub
Sub ConfigurarListaDeCampos()
Dim arrPesquisarNasPlanilhas As Variant
Dim i As Integer
    With ComboBox1
        .Style = fmStyleDropDownList
        .AddItem "Tudo"     '<--- Esta é utilizada para definir quando pesquisar em toda a planilha
        .AddItem "Nome"
        .AddItem "Estado"
        .AddItem "Função"
        .AddItem "Status"
        .ListIndex = 0
    End With
    With Combo_OndeSalvar
        'Recupera as Planilhas que são base de dados
        arrPesquisarNasPlanilhas = ConfigPlanilhasBase
        .Style = fmStyleDropDownList
        For i = 0 To UBound(arrPesquisarNasPlanilhas)
            .AddItem arrPesquisarNasPlanilhas(i)
        Next i
        .ListIndex = 0
    End With
End Sub
Function ConfigColunas(ByVal sNomeCampo As String) As String
    Select Case sNomeCampo
        Case "Nome"
            ConfigColunas = "A"
        Case "Estado"
            ConfigColunas = "B"
        Case "Função"
            ConfigColunas = "C"
        Case "Status"
            ConfigColunas = "D"
        Case Else           '<--- Esta é utilizada para definir quando pesquisar em toda a planilha
            ConfigColunas = ""
    End Select
End Function
Function ConfigPlanilhasBase() As Variant
Dim sNomeDasPlanilhas As String
    'Digite o nome das Planilhasonde os dados deverão ser procurados,
    'separados por ponto-e-vírgula (;)
    '
    sNomeDasPlanilhas = "Plan1;PlanBase2"   '<----- Informe as planilhas aqui
    Do While (Right(sNomeDasPlanilhas, 1) = ";")
        sNomeDasPlanilhas = Left(sNomeDasPlanilhas, Len(sNomeDasPlanilhas) - 1)
    Loop
    ConfigPlanilhasBase = Split(sNomeDasPlanilhas, ";")
End Function
Sub HabilitarControlesParaEdicao(ByVal bOpcao As Boolean)
    'Habilitar Botões Salvar/Cancelar
    btn_Salvar.Visible = bOpcao
    btn_Cancelar.Visible = bOpcao
    btn_Adicionar.Visible = Not (bOpcao)
    btn_Editar.Visible = Not (bOpcao)
    btn_Excluir.Visible = Not (bOpcao)
    btn_Procurar.Enabled = Not (bOpcao)
    txt_Procurar.Enabled = Not (bOpcao)
    ComboBox1.Enabled = Not (bOpcao)
    txt_Procurar.Value = ""
    Label_Registros_Contador.Caption = ""
    Label_PlanBase.Caption = ""
    If bOpcao = False And IsArray(MatrizResultadosLinha) Then
        SpinButton1.Enabled = True
    Else
        SpinButton1.Enabled = False
    End If
    'Liberar Campos para Edição.
    TextBox1.Locked = Not (bOpcao)
    TextBox2.Locked = Not (bOpcao)
    TextBox3.Locked = Not (bOpcao)
    TextBox4.Locked = Not (bOpcao)
    'Limpar o conteúdo dos campos
    If sAcaoRequerida <> "Editar" Then
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""
        TextBox4.Value = ""
        Combo_OndeSalvar.Visible = bOpcao
        Label_OndeSalvar.Visible = bOpcao
    End If
    If bOpcao = True Then
        TextBox1.SetFocus
    End If
End Sub

Um abraço a todos.

27 comentários em “Pesquisa Personalizada Simples 3 – Parte Final”

  1. Parabens Pelo Conteudo do seu Site, Simplesmente “FORMIDAVEL”
    Agora eu gostaria de saber se exixte como montar a partir da pesquisa um relatório para ser impresso ou enviado por e-mail ou até mesmo ser salvo como uma pasta de trabalho.
    Abraços e mais uma vez parabens pelo belissimo site

    Responder
    • Marcos, obrigado.
      Acredito que tudo é possível para quem tem uma boa lógica de programação e vontade de criar coisas legais.
      Para criar um relatório utilizando a mesma estrutura desta pesquisa que criei aqui no site, basta apenas, você substituir a escrita dos resultados nos campos do formulário e montar uma rotina para que esses resultados sejam escritos em uma nova planilha.
      Infelizmente, não posso fazer agora pra vc, mas vou acender a luz no fim do túnel pra vc (rsrs).
      Faça uma estrutura de repetição (loop) com os valores iniciais e finais do SpinButton1 e readapte os comando da rotina SpinButton1_Change(), pois é onde contém as instruções para escrever os resultados no formulário. Ao invés de mandar escrever no form, instrua para escrever numa planilha.
      Mais ou menos assim:
      For i=SpinButton1.Min to SpinButton.Max
      With Sheets(iPlanilha)
      PlanilhaRelatorio.Cells(i,1) = .Cells(sLinha, 1).Value
      PlanilhaRelatorio.Cells(i,2) = .Cells(sLinha, 2).Value
      PlanilhaRelatorio.Cells(i,3) = .Cells(sLinha, 3).Value
      PlanilhaRelatorio.Cells(i,4) = .Cells(sLinha, 4).Value
      End With
      Next i

      Abç

      Responder
      • Agradecer pelo ótimo trabalho , mas gostaria de colocar o resultado num ListView eu tente buscando os resultados assim
        For i=SpinButton1.Min to SpinButton.Max
        With Sheets(iPlanilha)
        Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(i, “a”).Value)
        li.ListSubItems.Add Text:=Plan1.Cells(i, “b”).Value
        li.ListSubItems.Add Text:=Plan1.Cells(i, “c”).Value
        li.ListSubItems.Add Text:=Plan1.Cells(i, “d”).Value
        li.ListSubItems.Add Text:=Plan1.Cells(i, “e”).Value
        End With
        Next i

        Responder
  2. Boa tarde, ultimamente estou tentando me aprofundar mais no excel e consequentemente na programação em VBA. Parabéns pelo ótimo conteúdo do site.
    Estou com uma tremenda duvida e se puder me ajudar ficarei infinitamente grato.
    Preciso criar uma macro digamos simples, poi quero expecificar em uma celula o nome da planilha e o código iria abrir a planilha do nome digitado.
    EX:
    Sub abrir_planilha()
    Worksheets(Plan1).Activate
    i = Range(“A1”)
    Worksheets(i).Activate
    End Sub
    Porém o código não reconhece o que está digitado em A1 dentro de worksheets.????
    Ta aí aguardo uma possível ajuda…

    Responder
  3. Boa tarde Reinaldo,
    Estou com mais um probleminha.
    Tenho um código (achado na net), que me dá uma fórmula chamada procvvarios. O código é esse:
    Option Explicit
    Function PROCVVARIOS(NomePesquisa As String, IntervaloPesquisa As Range, IntervaloRetorno As Range, Ocorrencia As Integer)
    Dim Nome
    Dim k As Integer, i As Integer
    Application.Volatile
    k = 1
    i = 1
    For Each Nome In IntervaloPesquisa
    If Nome = NomePesquisa Then
    If k = Ocorrencia Then PROCVVARIOS = IntervaloRetorno(i, 1)
    k = k + 1
    End If
    i = i + 1
    Next Nome
    End Function
    Estou tentando usá-lo em outra aplicação do VBA:
    Sub inserir_formula()
    Dim mes As String
    mes = Worksheets(“Plan1”).Range(“D1”)
    Worksheets(“Plan1”).Range(“A1”).Formula = _
    “=procvvarios(B1,mes &!C1:C6,mes &!C1:C6,_
    Plan1!B2)”
    End Sub
    Obs. Worksheets(“Plan1”).Range(“D1”) = “Plan2”
    Porém não está dando o caminho desejado em “…mes &!C1:C6…”
    Será que você poderia me ajudar com mais essa duvida, irá me ajudar muito. Desde já agradeço sua atenção.

    Responder
    • Anderson,
      Sub inserir_formula()
      Dim mes As String
      mes = Worksheets(“Plan1”).Range(“D1”)
      Worksheets(“Plan1”).Range(“A1”).Formula = _
      “=procvvarios(B1,” & mes & “!C1:C6,” & mes & “!C1:C6,” _
      & “Plan1!B2)”
      End Sub
      Explicando: Váriáveis não são interpretadas dentro de aspas!
      Abç.

      Responder
  4. Reinaldo estou utilizando esta consulta em meus trabalhos e diga-se de passagem muito bem elaborada e muito bem explicada. uma duvida e se e possivel que a textbox retorne a cor da formatação da celula ? Grato.

    Responder
    • Wilson,
      Não sei bem o que deseja, mas, segue uma luz…
      Adicione um TextBox5;
      Acrescente a linha de código abaixo na chamada de evento Private Sub SpinButton1_Change():
      TextBox5.BackColor = .Cells(sLinha, 1).Interior.Color
      Espero que ajude.
      Abç

      Responder
  5. Bom dia, Reinaldo
    A sua contribuiçao para os amantes do excel é indiscutivel.
    A minha duvida: Preciso quebrar linhas e não estou conseguindo quando digito várias planilhas a ser procuradas, total de 50 plan, o underline da erro.
    Só consigo se a linha não for quebrada, porém ficaria enorme.
    Abraços
    Sampaio

    Responder
    • Sampaio,
      Você está se referindo a esta linha?
      sNomeDasPlanilhas = “Plan1;PlanBase2” ‘<—– Informe as planilhas aqui
      Se for, voce pode fazer assim:
      sNomeDasPlanilhas = "Plan1;Plan2;Plan3" _
      & "Plan4;Plan5;Plan6;" _
      & "Plan7;Plan8;Plan9;Plan10"
      Espero que ajude.
      Abç
      —————————————————
      Siga-nos no twitter: @exceldoseujeito

      Responder
  6. Bom dia, Reinaldo
    Obrigado pelo retorno;
    Agora aceitou o underline para quebrar as linhas do código, porém esta dando erro em tempo de execução ‘9’ subscrito fora do intervalo.
    Segue o cód. com as lihas quebradas; obs. sem quebrar linha funciona normalmente.
    sNomeDasPlanilhas = “Cliente RA00(1);Cliente RA00(2);Cliente RA00(3);Cliente RA00(4)” _
    & “Cliente RA00(5);Cliente RA00(6);Cliente RA00(7);Cliente RA00(8);Cliente RA00(9)” _
    & “Cliente RA0(10);Cliente RA00(11);Cliente RA00(12);Cliente RA00(13);Cliente RA00(14)” ‘With Sheets(arrPesquisarNasPlanilhas(i))
    If sSearchInCol = “” Then
    Abç
    Sampaio

    Responder
    • Sampaio,
      Pelo que você escreveu, vi que faltam alguns “;” (ponto-e-vírgula) no final de cada linha, após o nome da última planilha da linha.
      Faça:
      sNomeDasPlanilhas = “Cliente RA00(1);Cliente RA00(2);Cliente RA00(3);Cliente RA00(4);” _
      & “Cliente RA00(5);Cliente RA00(6);Cliente RA00(7);Cliente RA00(8);Cliente RA00(9);” _
      & “Cliente RA0(10);Cliente RA00(11);Cliente RA00(12);Cliente RA00(13);Cliente RA00(14)”
      Abç
      —————————————————
      Siga-nos no twitter: @exceldoseujeito

      Responder
  7. Obrigado Reinaldo, deu certo a quebra de linhas
    Alias tenho um outro form que busca na planilha ativa, porém não consigo fazer buscar apenas na coluna “A”
    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 = ActiveSheet.Range(“A1:A765”).Find(What:=TermoPesquisado, After:=Range(“A1”), LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByColumns, 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 = ActiveSheet.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
    Abç
    Sampaio

    Responder
  8. Muito obrigado professor Reinaldo Coral!
    Gosto muito do MS Excel e fico feliz toda vez que encontro boa oportunidade de aprender mais sobre os assunto. Seu artigo é excelente!

    Responder
  9. Bom dia.
    Reinaldo, Excelente trabalho!!
    Adaptei seu código para uma planilha que uso, porém, gostaria que cada vez que apertasse o botão para mostra a próxima ocorrência, ele ativasse a célula com o conteúdo. Não estou conseguindo isso.
    Tem como?
    Grato,

    Responder

Deixe uma resposta para anderson Cancelar resposta