Como autocompletar uma caixa de texto ao digitar no Excel?
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:
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:
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.
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
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:
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:
- Como selecionar automaticamente o texto de uma caixa de texto quando ela é selecionada no Excel?
- Como limpar o conteúdo de uma caixa de texto ao clicar no Excel?
- Como concatenar textos de várias células em uma caixa de texto no Excel?
- Como desabilitar a edição em uma caixa de texto para evitar a entrada do usuário no Excel?
- Como formatar uma caixa de texto como porcentagem no Excel?
Melhores Ferramentas de Produtividade para Office
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!