Guia do Excel

LOCALIZAR AVANÇADO

MR
Marcos Rieper

Especialista em Excel

Atualizado em 19 de setembro de 2026 Publicado em 08 de agosto de 2010 3 min de leitura

https://www.guiadoexcel.com.br/downloads/

Você quer localizar um valor em uma pasta de trabalho do Excel, porém o CTRL+L só traz os resultados da planilha em que você está. Ou seja se você quisesse um resultado diferente teria que ir de aba em aba usando CTR+L, o que seria uma perda de tempo.

No post de hoje vou ensinar como criar um localizar avançado no Excel que procura em todas as planilhas e não só na atual, se gostarem em um outro post eu posso fazer um para substituir os valores localizados nas planilhas.

Criando o formulário

  • Com o Excel aberto, clique na guia Desenvolvedor e no botão Visual Basic.

  • Clique no projeto VBAProject(PERSONAL.XLSB).

  • Selecione o menu Inserir->User Form

Projeto

Projeto

  • Clique no formulário criado e selecione na caixa de ferramentas os objetos:

  1. Frame = altere a propriedade name para frDados e a Caption para Pesquisar

  2. Lable = altere a propriedade Caption para Pesquisar

  3. TextBox = altere a propriedade name para txtPesquisa

  4. CommandButton = altere a propriedade Caption para Pesquisar

  5. Frame2 = altere a propriedade Caption para Resultados

  6. ListBox = altere a propriedade Name para listResultado, a propriedade ForeColor para &H00FF0000& e fonte marcar como sublinhado.

Formulário

Formulário

Programação

Clique duas vezes sobre o botão Pesquisar e insira o código abaixo:

Private Sub CommandButton1_Click() Dim currentFind As Excel.Range Dim firstFind As Excel.Range Dim lQtdePlan As Integer Dim lPlanAtual As Integer Dim lPlanFim As Boolean 'Conta a quantidade de planilhas lQtdePlan = Worksheets.Count lPlanAtual = 1 lPlanFim = False 'Limpa os resultados listResultado.Clear 'Verifica se há texto para pesquisar If txtPesquisa.Text <> "" Then 'Loop pelas planilhas While lPlanAtual <= lQtdePlan 'Define a Range de Pesquisa Set currentFind = Worksheets(lPlanAtual).Range("A1:XFD1048576").Find(txtPesquisa.Text, , _ Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _ Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False) Set firstFind = Nothing 'Realiza o loop das pesquisas While Not currentFind Is Nothing And lPlanFim = False If firstFind Is Nothing Then Set firstFind = currentFind ElseIf currentFind.Address = firstFind.Address Then lPlanFim = True End If If lPlanFim = False Then Set currentFind = Worksheets(lPlanAtual).Range("A1:XFD1048576").FindNext(currentFind) listResultado.AddItem (Worksheets(lPlanAtual).Name & "!" & currentFind.Address) End If Wend 'Passa para a próxima planilha lPlanAtual = lPlanAtual + 1 lPlanFim = False Wend End If Sair: Exit Sub End Sub

Clique duas vezes no ListBox e insira o código abaixo:

Private Sub listResultado_Click() Dim lRng As Range Dim lEndereco() As String 'Separa a planilha da célula lEndereco = Split(listResultado, "!") 'Abre a planilha Worksheets(lEndereco(0)).Activate 'Define o endereço Set lRng = Range(lEndereco(1)) 'Ativa o endereço lRng.Activate End Sub 

Clique na guia Inserir Módulo, e no módulo criado insira o código abaixo:

Sub gsLocalizarAvancado() frmPesquisaAvancada.Show End Sub

Salve e feche o ambiente de desenvolvimento, voltando desta forma para a pasta de trabalho.

Criando o Atalho

  • Clique na guia Desenvolvedor e no botão Macros, selecione a função PERSONAL.XLSB!gsLocalizarAvancado.

  • Clique no botão Opções e na caixa tecla de atalho digite Shift+l, ou seja L maiúsculo.

Atalho

Atalho

Concluindo

Como resultado temos que uma tela que será chamada quando você digitar CTRL+SHIFT+L e que irá realizar uma busca por todas as planilhas da pasta de trabalho aberta já com link para ela, ou seja ao clicar nos resultados você será direcionado diretamente para ele, assim como o localizar nativo do Excel.

Teste

Teste - Clique para ampliar

Então é isso amigos, agradeço a leitura do artigo, e se tiverem dúvidas, sugestões ou comentários sobre o blog fiquem a vontade para fazer.

https://www.guiadoexcel.com.br/downloads/

Marcos Rieper

Este conteúdo foi útil?

Continue lendo