KutoolsforOffice — Uma solução, cinco ferramentas poderosas.Fazer mais com menos esforço.

Como ativar o preenchimento automático numa caixa de texto enquanto digita no Excel?

AutoraSiluvia Data de Modificação

Por predefinição, o Excel memoriza o que introduz nas células da folha atual e preenche automaticamente esse conteúdo sempre que começar a digitar uma letra correspondente numa nova célula. No entanto, se pretender que todos os conteúdos inseridos na folha de cálculo sejam usados para preenchimento automático numa caixa de texto (Controlo ActiveX), como poderá fazê-lo? Este artigo apresenta um método em VBA que lhe permite preencher automaticamente uma caixa de texto à medida que digita a primeira letra.

Preenchimento automático de uma caixa de texto ao digitar com código VBA


Preenchimento automático de uma caixa de texto ao digitar com código VBA

Siga os passos abaixo para ativar o preenchimento automático de uma caixa de texto ao digitar a letra inicial.

1. Insira uma caixa de texto clicando em Programador > Inserir > Caixa de Texto (Controlo ActiveX). Veja a imagem:

clique para inserir uma Caixa de Texto

2. Em seguida, clique em Programador > Inserir > Caixa de Listagem (Controlo ActiveX) para inserir uma caixa de listagem na folha atual. Veja a imagem:

clique para inserir uma Caixa de Lista

3. Clique com o botão direito do rato no separador da folha e, em seguida, clique em Ver Código no menu de contexto, conforme ilustrado na imagem seguinte.

aceda a Ver Código a partir do menu de clique com o botão direito

4. Na janela do Microsoft Visual Basic para Aplicações, copie e cole o seguinte código VBA na janela de Código. Em seguida, clique em Ferramentas > Referências e marque a caixa Microsoft Scripting Runtime na caixa de diálogo Referências – VBAProject. Veja a imagem:

Código VBA: Preenchimento automático de 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

aceda à caixa de diálogo Referências e marque Microsoft Scripting Runtime

Nota: No código, ListBox1 e Textbox1 são os nomes da caixa de listagem e da caixa de texto que inseriu na sua folha de cálculo.

5. Prima as teclas Alt+Q para sair da janela do Microsoft Visual Basic para Aplicações.

6. Desative o Modo de Estrutura clicando em Programador > Modo de Estrutura na folha de cálculo.

7. Agora, mude para outra folha de cálculo e volte à folha anterior para ativar o código VBA.

A partir de agora, ao introduzir uma letra inicial na caixa de texto, todos os textos que começam com essa letra e que tenha introduzido na folha de cálculo serão listados na caixa de listagem localizada à direita da caixa de texto. Faça duplo clique no item pretendido para o introduzir na caixa de texto. Veja a imagem:

Ao introduzir uma letra inicial na caixa de texto, todos os textos que começam com essa letra serão listados

Nota: Pode utilizar a tecla Seta para Cima ou Seta para Baixo para navegar entre todas as sugestões de preenchimento automático na caixa de listagem e, em seguida, premir a tecla Enter para introduzir o item pretendido na caixa de texto.



Artigos relacionados:

As Melhores Ferramentas de Produtividade para o Office

🤖KUTOOLS AI Assistente: Revolucione o 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
Funcionalidades Populares:Localizar, Destacar ou Marcar Duplicatas   |  Excluir linhas em branco   |  Combinar Colunas ou Células sem Perder Dados   |   Arredondamento sem usar fórmula...
Super PROC:VLookup com Múltiplos Critérios  |  VLookup com Múltiplos Valores  |   VLookup em Múltiplas Folhas   |   Correspondência Fuzzy....
Lista Suspensa Avançada:Criar Rapidamente Lista de Seleção   |  Lista de Seleção Dependente   |  Lista de Seleção com Múltipla Escolha....
Gestor de Colunas:Adicionar um Número Específico de Colunas|Mover Colunas|Alternar Estado de Visibilidade de Colunas Ocultas|Comparar Intervalos e Colunas...
Funcionalidades em Destaque:Grade de foco   |  Visualização de Design   |Barra de fórmulas aprimorada   | Gestor de Pastas de Trabalho e Folhas   |  Biblioteca de Recursos(Texto Automático)|  Seleção de Data   |  Consolidar Planilhas  |  Encriptar/Descriptografar Células   | Enviar Emails por Lista   |  Super Filtro   |   Filtro Especial(Filtrar Células com Fonte em Negrito/itálico/rasurado...) ...
Principais Conjuntos de Ferramentas 15:12 Ferramentasde Texto(Adicionar Texto,Excluir Caracteres Específicos, ...)|   50+Tiposde Gráfico(Gráfico de Gantt, ...)|   40+ Fórmulas Práticas(Calcular a idade com base na data de nascimento, ...)|   19 Ferramentasde Inserção(Inserir QR Code,Inserir Imagem a Partir do Caminho, ...)|   12 Ferramentasde Conversão(Converter em Palavras,Conversão de moeda, ...)|   7 Ferramentasde Mesclar e Dividir(Mesclar Linhas Avançado,Dividir Células, ...)|... e muito mais
Utilize o Kutools na sua língua preferida – suporta inglês, espanhol, alemão, francês, chinês e mais 40+ idiomas!

Potencie as suas competências no Excel com Kutools para Excel e experimente uma eficiência como nunca antes.Kutools para Excel Oferece mais de 300 funcionalidades avançadas para impulsionar a produtividade e Economizar Tempo.Clique aqui para obter a funcionalidade de que mais precisa...


Office Tab Traz uma interface com separadores para o Office e torna o seu trabalho muito mais fácil

  • Ative a edição e leitura com separadores no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novos separadores da mesma janela, em vez de em janelas separadas.
  • Aumente a sua produtividade em 50 % e elimine centenas de cliques do rato todos os dias!

Todos os suplementos Kutools — num único instalador.

Kutools for Office reúne suplementos para Excel, Word, Outlook e PowerPoint, além do Office Tab Pro, sendo a solução ideal para equipas que trabalham em várias aplicações do Office.

ExcelWordOutlookTabsPowerPoint
  • Pacote tudo-em-um— suplementos para Excel, Word, Outlook e PowerPoint + Office Tab Pro
  • Um instalador, uma licença— configuração em minutos (pronto para MSI)
  • Funciona melhor em conjunto— produtividade simplificada em todas as aplicações do Office
  • Teste gratuito de 30 dias com todas as funcionalidades— sem registo, sem cartão de crédito
  • Melhor relação qualidade-preço— poupe face à compra individual dos suplementos