¿Cómo autocompletar un cuadro de texto al escribir en Excel?
De forma predeterminada, Excel puede recordar lo que ha ingresado en las celdas de la hoja de trabajo actual y completar automáticamente este contenido la próxima vez al escribir una letra inicial relacionada en una nueva celda. Sin embargo, si desea que todos los contenidos que ha ingresado en la hoja de trabajo se completen automáticamente en un cuadro de texto (Control ActiveX), ¿cómo podría hacerlo? Este artículo proporcionará un método VBA para ayudarlo a completar automáticamente un cuadro de texto al escribir una letra inicial en el interior.
Autocompletar un cuadro de texto al escribir con código VBA
Autocompletar un cuadro de texto al escribir con código VBA
Haga lo siguiente para que un cuadro de texto se complete automáticamente al escribir una letra inicial dentro del cuadro de texto.
1. Inserte un cuadro de texto haciendo clic en Developer > recuadro > Cuadro de texto (control ActiveX). Ver captura de pantalla:
2. Y luego haga clic en Developer > recuadro > Cuadro de lista (control ActiveX) para insertar un cuadro de lista en la hoja de trabajo actual. Ver captura de pantalla:
3. Haga clic con el botón derecho en la pestaña de la hoja y luego haga clic en Ver código desde el menú contextual como se muestra a continuación.
4. En el Microsoft Visual Basic para aplicaciones ventana, copie y pegue debajo del código VBA en la ventana Código. Y luego haga clic en Herramientas > Referencias, y luego revisa el Tiempo de ejecución de secuencias de comandos de Microsoft en el cuadro Referencias - VBAProject caja de diálogo. Ver captura de pantalla:
Código de 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
Note: En el código, ListBox1 y Cuadro de texto1 son el nombre del cuadro de lista y el cuadro de texto que ha insertado en su hoja de trabajo.
5. presione el otro + Q llaves para salir del Microsoft Visual Basic para aplicaciones ventana.
6. Desactive el modo de diseño haciendo clic en Developer > Modo de diseño en la hoja de trabajo.
7. Ahora cambie a otra hoja de trabajo y luego vuelva a la hoja de trabajo anterior para habilitar el código VBA.
De ahora en adelante. Al ingresar una letra inicial en el cuadro de texto, todos los textos que comienzan con esa letra que ingresó en la hoja de trabajo se enumerarán dentro del cuadro de lista que se encuentra en el lado derecho del cuadro de texto. Haga doble clic en el que necesita para ingresarlo en el cuadro de texto. Ver captura de pantalla:
Note: Puedes usar el Up or Plumón tecla de flecha para moverse entre todos los textos de autocompletar en el cuadro de lista, y luego presione la tecla Participar para ingresar la necesaria en el cuadro de texto.
Artículos relacionados:
- ¿Cómo seleccionar automáticamente el texto de un cuadro de texto cuando está seleccionado en Excel?
- ¿Cómo borrar el contenido del cuadro de texto cuando se hace clic en Excel?
- ¿Cómo concatenar textos de varias celdas en un cuadro de texto en Excel?
- ¿Cómo deshabilitar la edición en el cuadro de texto para evitar que el usuario ingrese en Excel?
- ¿Cómo formatear un cuadro de texto como porcentaje en Excel?
Las mejores herramientas de productividad de oficina
Mejore sus habilidades de Excel con Kutools for Excel y experimente la eficiencia como nunca antes. Kutools for Excel ofrece más de 300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haga clic aquí para obtener la función que más necesita...
Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Habilite 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 de la misma ventana, en lugar de en nuevas ventanas.
- ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!