Skip to main content

Como autocompletar uma caixa de texto ao digitar no Excel?

Author: Siluvia Last Modified: 2025-06-04

Por padrão, o Excel pode lembrar o que você digitou nas células da planilha atual e autocompletar esse conteúdo na próxima vez que você digitar uma letra inicial relacionada em uma nova célula. No entanto, se você deseja que todo o conteúdo digitado na planilha seja autocompletado em uma caixa de texto (Controle ActiveX), como poderia fazer isso? Este artigo fornecerá um método VBA para ajudá-lo a autocompletar uma caixa de texto ao digitar uma letra inicial dentro dela.

Autocomplete uma caixa de texto ao digitar com código VBA


Autocomplete uma caixa de texto ao digitar com código VBA

Por favor, siga os passos abaixo para configurar uma caixa de texto para autocompletar ao digitar uma letra inicial dentro da caixa de texto.

1. Por favor, insira uma caixa de texto clicando em Desenvolvedor > Inserir > Caixa de Texto (Controle ActiveX). Veja a captura de tela:

click to insert Text Box

2. Em seguida, clique em Desenvolvedor > Inserir > Caixa de Lista (Controle ActiveX) para inserir uma caixa de lista na planilha atual. Veja a captura de tela:

click to insert List Box

3. Clique com o botão direito na guia da planilha e, em seguida, clique em Visualizar Código no menu de contexto, conforme mostrado na captura de tela abaixo.

click View Code from right click menu

4. Na janela Microsoft Visual Basic for Applications, copie e cole o código VBA abaixo na janela de Código. Depois disso, clique em Ferramentas > Referências e marque a caixa Microsoft Scripting Runtime na caixa de diálogo Referências – VBAProject. Veja a captura de tela:

Código VBA: Autocomplete uma caixa de texto ao digitar

Dim xRg As Range
Dim xDic As New Dictionary
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.TextBox1.Value = Me.ListBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xVal As String
    On Error Resume Next
    If IsNumeric(Target.Value) Then
        xVal = Str(Target.Value)
    Else
        xVal = Target.Value
    End If
    If xVal <> "" Then
        If Not xDic.Exists(xVal) Then
            xDic.Add xVal, xVal
        End If
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Me.ListBox1.Visible = False
End Sub
Private Sub Worksheet_Activate()
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    If xRg Is Nothing Then
        Set xRg = ActiveSheet.UsedRange
    End If
    Me.ListBox1.Visible = False
    xDic.RemoveAll
    With Me.ListBox1
        For I = 1 To xRg.Count
            xStr = xRg(I).Value
            If xStr <> "" Then
                .AddItem xStr
                If Not xDic.Exists(xStr) Then
                    xDic.Add xStr, xStr
                End If
            End If
        Next
    End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With Me.ListBox1
        .Top = Me.TextBox1.Top
        .Left = Me.TextBox1.Left + Me.TextBox1.Width
        .Width = Me.TextBox1.Width
    End With
    TextBoxVal Me.TextBox1.Object
End Sub
Sub TextBoxVal(xTextBox As Variant)
    Dim I As Long
    Dim xStr As String
    On Error Resume Next
    Application.ScreenUpdating = False
    If xRg Is Nothing Then Exit Sub
    Me.ListBox1.Clear
    xStr = xTextBox.Value
    If xStr = "" Then
        Me.ListBox1.Visible = False
        Application.EnableEvents = True
        Exit Sub
    End If
    For I = 0 To UBound(xDic.Items)
        If Left(xDic.Items(I), Len(xStr)) = xStr Then
            Me.ListBox1.AddItem xDic.Items(I)
        End If
    Next
    Me.ListBox1.Visible = True
    If Me.ListBox1.ListCount > 0 Then
        With xTextBox
            .Value = Me.ListBox1.List(0)
            .SelStart = Len(xStr)
            .SelLength = Len(Me.ListBox1.List(0))
        End With
    End If
    Me.ListBox1.Activate
    Me.ListBox1.Selected(0) = True
    Application.ScreenUpdating = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Me.TextBox1.Value = Me.ListBox1.Value
    End If
End Sub

go to References dialog box and check Microsoft Scripting Runtime

Nota: No código, ListBox1 e Textbox1 são os nomes da caixa de lista e da caixa de texto que você inseriu na sua planilha.

5. Pressione as teclas Alt + Q para sair da janela Microsoft Visual Basic for Applications.

6. Desative o Modo de Design clicando em Desenvolvedor > Modo de Design na planilha.

7. Agora mude para outra planilha e depois volte para a planilha anterior para ativar o código VBA.

A partir de agora, ao digitar uma letra inicial na caixa de texto, todos os textos que começam com essa letra que você digitou na planilha serão listados dentro da caixa de lista localizada à direita da caixa de texto. Clique duas vezes no item desejado para inseri-lo na caixa de texto. Veja a captura de tela:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

Nota: Você pode usar as teclas de seta para cima ou para baixo para navegar por todos os textos de autocompletar na caixa de lista e, em seguida, pressionar a tecla Enter para inserir o item desejado na caixa de texto.



Artigos relacionados:

Melhores Ferramentas de Produtividade para Office

🤖 Assistente AI do KUTOOLS: Revolucione a análise de dados com base em: Execução Inteligente | Gerar Código | Criar Fórmulas Personalizadas | Analisar Dados e Gerar Gráficos | Invocar Funções Aprimoradas
Recursos Populares: Encontrar, Destacar ou Marcar Duplicatas | Excluir Linhas em Branco | Combinar Colunas ou Endereço sem Perder Dados | Arredondar...
Super PROC: PROC com Múltiplos Critérios | PROC com Múltiplos Valores | Procura em várias planilhas | Correspondência Fuzzy...
Lista Suspensa Avançada: Crie rapidamente uma Lista Suspensa | Lista Suspensa Dependente | Lista Suspensa com Múltipla Seleção...
Gerenciador de Colunas: Adicionar um Número Específico de Colunas | Mover Colunas | Alternar Estado de Visibilidade das Colunas Ocultas | Comparar Intervalo & Colunas...
Recursos em Destaque: Grade de foco | Visualização de Design | Barra de fórmulas aprimorada | Gerenciador de Pasta de trabalho & Planilha | Biblioteca de AutoTexto | Selecionador de Data | Mesclar Dados | Criptografar/Descriptografar Células | Enviar Email por Lista | Super Filtro | Filtro Especial (filtrar negrito/itálico/tachado...)...
Top15 Conjuntos de Ferramentas:12 Ferramentas de Texto (Adicionar Texto, Excluir Caracteres Específicos, ...) | Mais de50 Tipos de Gráficos (Gráfico de Gantt, ...) | Mais de40 Fórmulas Práticas (Calcular a idade com base na data de nascimento, ...) |19 Ferramentas de Inserção (Inserir Código QR, Inserir Imagem a partir do Caminho, ...) |12 Ferramentas de Conversão (Converter em Palavras, Conversão de Moeda, ...) |7 Ferramentas de Mesclar & Dividir (Mesclar Linhas Avançado, Dividir Células, ...) | ... e muito mais

Potencialize suas habilidades no Excel com o Kutools para Excel e experimente uma eficiência sem igual. O Kutools para Excel oferece mais de300 recursos avançados para aumentar sua produtividade e economizar tempo. Clique aqui para obter o recurso que você mais precisa...


O Office Tab traz interface com abas para o Office e facilita muito o seu trabalho

  • Habilite a edição e leitura com abas no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas abas na mesma janela, em vez de abrir novas janelas.
  • Aumente sua produtividade em50% e reduza centenas de cliques do mouse todos os dias!