Guia do Excel

Auto completar em Excel VBA

Como realizar a complementação de dados em Excel, fazendo com que os dados que vão sendo digitados sejam pesquisados em uma lista determinada.

MR
Marcos Rieper

Especialista em Excel

Atualizado em 08 de julho de 2026 Publicado em 13 de outubro de 2012 3 min de leitura

Auto completar em Excel VBA

Objetivo: Disponibilizar um exemplo de como podemos fazer um auto completar para listas em Excel.


 O recurso de auto completar no Excel é limitado ao preenchimento automático apenas quando a lista de palavras está acima da palavra que está sendo digitada atualmente.

 Neste artigo é disponibilizado um exemplo de como utilizar o código VBA e o Excel para que possamos auto completar dados com o uso de um formulário e depois jogar este resultado diretamente na célula ativa do Excel.

  Para tanto você pode pressionar o botão que coloquei no formulário, ou ainda melhor, utilizar o atalho CTRL+SHIFT+a que coloquei atribuído ao método que chama o formulário.

  O código completo pode ser visto clicando na guia Desenvolvedor e clicando sobre o objeto do formulário.

'Digite aqui o intervalo a ser autocompletado
Private Const r As String = "A1:A100"
Private sInput As String

'Faz parar a pesquisa dos dados digitados
Dim flParar As Boolean

'Ao digitar deletar ou backspace o sistema limpa a variável de controle para pesquisar novamente
Private Sub txtInput_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    'Limpa a variável de controle
    If (KeyCode = vbKeyBack) Or (KeyCode = vbKeyDelete) Then
        flParar = True
    Else
        flParar = False
    End If
        
    If (KeyCode = 13) Then
        ActiveCell.Value = UserForm1.txtInput.Text
        UserForm1.txtInput.Value = vbNullString
        UserForm1.Hide
    End If
 
End Sub
 
'Faz a busca das palavras
Private Sub txtInput_Change()
    Dim lPalavra As String
    
    If flParar Then
        flParar = False
    Else
        sInput = Left(Me.txtInput, Me.txtInput.SelStart)
        lPalavra = GetFirstCloserWord(sInput)
        If lPalavra & ""  "" Then
            flParar = True
            Me.txtInput.Text = lPalavra
            Me.txtInput.SelStart = Len(sInput)
            Me.txtInput.SelLength = 999999
        End If
    End If
    
End Sub

'Seleciona a primeira letra
Private Function GetFirstCloserWord(ByVal Word As String) As String
    Dim c As Range
    
    For Each c In ActiveSheet.Range(r).Cells
    If LCase(c.Value) Like LCase(Word & "*") Then
            GetFirstCloserWord = c.Value
            Exit Function
        End If
    Next c
    Set c = Nothing
 
End Function

Veja como ficou o formulário:

Para utilizar este formulário você deve clicar com o botão direito sobre o formulário UserForm1 e em Exportar arquivo..., clique depois em Módulo1 e Exportar arquivo...

Feitas estas exportações você deve ir na guia Desenvolvedor com a sua planilha nova aberta e depois clique em qualquer objeto na guia Desenvolvedor e em importar conforme a imagem.

Agora altere o local aonde a lista dos dados estará ativa, o intervalo "A1:A100".

'Digite aqui o intervalo a ser autocompletado
Private Const r As String = "A1:A100"

Na planilha você pode atribuir o procedimento Botão1_Clique ao atalho que preferir no teclado clicando na Guia Desenvolvedor->Macros e selecionando o procedimento Botão1_Clique.

Material gratuito

Planilha de Controle Financeiro no Excel

Tenha um controle bonito e completo do seu financeiro.

  • Categorias e subcategorias já configuradas
  • Planilhas separadas por tabela (configuração, lançamentos, resumo)
  • Personalize com suas próprias categorias e ícones

Baixe grátis — receba o link no seu e-mail

Download — baixe aqui: AutocompletarExcel
AutocompletarExcel21 KB · Excel 2010 ou superior · com macrosPreencha seus dados para receber o link de download no seu e-mail.

Abraço

Marcos Rieper

Este conteúdo foi útil?

Continue lendo