Como autocompletar uma caixa de texto ao digitar no Excel?
Por padrão, o Excel pode lembrar o que você inseriu nas células da planilha atual e preencher automaticamente esse conteúdo na próxima vez ao digitar uma letra inicial relacionada em uma nova célula. No entanto, se você deseja fazer com que todos os conteúdos inseridos na planilha sejam preenchidos automaticamente em uma caixa de texto (Controle ActiveX), como você faria? Este artigo fornecerá um método VBA para ajudá-lo a preencher automaticamente uma caixa de texto ao digitar uma letra inicial dentro dela.
Preencher automaticamente uma caixa de texto ao digitar com o código VBA
Preencher automaticamente uma caixa de texto ao digitar com o código VBA
Faça o seguinte para preencher automaticamente uma caixa de texto ao digitar uma letra inicial dentro da caixa de texto.
1. Insira uma caixa de texto clicando em Developer > inserção > Caixa de texto (controle ActiveX). Veja a imagem:
2. E então clique Developer > inserção > Caixa de listagem (controle ActiveX) para inserir uma caixa de listagem na planilha atual. Veja a imagem:
3. Clique com o botão direito do mouse na guia da planilha e clique em Ver código no menu de contexto, conforme a imagem mostrada abaixo.
4. No Microsoft Visual Basic para Aplicações janela, copie e cole o código VBA abaixo na janela Código. E então clique Ferramentas > Referências, e depois verifique o Tempo de execução de scripts da Microsoft caixa no Referências - VBAProject caixa de diálogo. Veja a imagem:
Código VBA: preencher automaticamente 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
Note: No código, ListBox1 e Caixa de Texto 1 são o nome da caixa de listagem e da caixa de texto que você inseriu na planilha.
5. aperte o outro + Q chaves para sair do Microsoft Visual Basic para Aplicações janela.
6. Desative o modo de design clicando em Developer > Modo de design na planilha.
7. Agora mude para outra planilha e volte para a planilha anterior para habilitar o código VBA.
De agora em diante. Ao inserir uma letra inicial na caixa de texto, todos os textos que começam com aquela letra que você inseriu na planilha serão listados dentro da caixa de listagem localizada no lado direito da caixa de texto. Clique duas vezes no seu necessário para inseri-lo na caixa de texto. Veja a imagem:
Note: Você pode usar o Up or Para baixo tecla de seta para mover entre todos os textos de preenchimento automático na caixa de lista e, em seguida, pressione o Entrar para inserir o necessário 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 da caixa de texto quando clicado no Excel?
- Como concatenar textos de várias células em uma caixa de texto no Excel?
- Como desabilitar a edição na 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 de escritório
Aprimore suas habilidades de Excel com o Kutools para Excel e experimente uma eficiência como nunca antes. Kutools para Excel oferece mais de 300 recursos avançados para aumentar a produtividade e economizar tempo. Clique aqui para obter o recurso que você mais precisa...
Office Tab traz interface com guias para o Office e torna seu trabalho muito mais fácil
- Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
- Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!