¿Cómo autocompletar un cuadro de texto mientras escribes en Excel?
De forma predeterminada, Excel recuerda lo que ha introducido en las celdas de la hoja de trabajo actual y autocompleta ese contenido la próxima vez que escriba una letra inicial relacionada en una celda nueva. Sin embargo, si desea que todos los contenidos introducidos en la hoja de cálculo se autocompleten en un cuadro de texto (Control ActiveX), ¿cómo podría lograrlo? Este artículo le ofrece un método VBA para autocompletar un cuadro de texto al escribir una letra inicial dentro del mismo.
Autocompletar un cuadro de texto al escribir con código VBA
Autocompletar un cuadro de texto al escribir con código VBA
Siga estos pasos para que un cuadro de texto se autocomplete al escribir la letra inicial en su interior.
1. Inserte un cuadro de texto haciendo clic en Desarrollador > Insertar > Cuadro de texto (Control ActiveX). Vea la captura de pantalla:

2. A continuación, haga clic en Desarrollador > Insertar > Cuadro de lista (Control ActiveX) para insertar un cuadro de lista en la hoja de trabajo actual. Vea la captura de pantalla:

3. Haga clic con el botón derecho en la pestaña de la hoja y, a continuación, haga clic en Ver código en el menú contextual, como muestra la siguiente captura de pantalla.

4. En la ventana de Microsoft Visual Basic para Aplicaciones, copie y pegue el siguiente código VBA en la ventana de código. A continuación, haga clic en Herramientas > Referencias y active la casilla de Microsoft Scripting Runtime en el cuadro de diálogo Referencias: VBAProject. Consulte la captura de pantalla:
Código VBA: Autocompletar un cuadro de texto al escribir
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: En el código, ListBox1 y Textbox1 son los nombres del cuadro de lista y del cuadro de texto que ha insertado en su hoja de cálculo.
5. Pulse las teclas Alt + Q para cerrar la ventana de Microsoft Visual Basic para Aplicaciones.
6. Desactive el modo Diseño haciendo clic en Desarrollador > Modo diseño en la hoja de cálculo.
7. Cambie ahora a otra hoja de cálculo y regrese a la hoja anterior para activar el código VBA.
A partir de ahora, al escribir una letra inicial en el cuadro de texto, todos los textos de la hoja de cálculo que comiencen con dicha letra aparecerán automáticamente en la lista situada a la derecha. Simplemente haga doble clic en el texto que necesite para insertarlo directamente en el cuadro de texto. Vea la captura de pantalla:

Nota: Puede utilizar las teclas de flecha Arriba o Abajo para desplazarse por todas las opciones del autocompletado en el cuadro de lista y, a continuación, pulsar la tecla Intro para insertar la opción deseada en el cuadro de texto.
Artículos relacionados:
- ¿Cómo seleccionar automáticamente el texto de un cuadro de texto al hacer clic en él en Excel?
- ¿Cómo borrar el contenido de un cuadro de texto al hacer clic en él en Excel?
- ¿Cómo concatenar el texto de varias celdas en un cuadro de texto en Excel?
- ¿Cómo deshabilitar la edición en un cuadro de texto para impedir que el usuario escriba en Excel?
- ¿Cómo aplicar formato de porcentaje a un cuadro de texto en Excel?
Las mejores herramientas de productividad para Office
Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...
Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
- ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!
Todos los complementos de Kutools en un solo instalador.
Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.
- Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
- Un instalador, una licencia— configuración en minutos (compatible con MSI)
- Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
- Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
- La mejor relación calidad-precio— ahorre frente a la compra individual de complementos