Saltar al contenido principal

¿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:

Las mejores herramientas de productividad de oficina

Características populares: Buscar, resaltar o identificar duplicados   |  Eliminar filas en blanco   |  Combine columnas o celdas sin perder datos   |   Ronda sin fórmula ...
Super búsqueda: Búsqueda virtual de criterios múltiples    Búsqueda V de valores múltiples  |   VLookup en varias hojas   |   Búsqueda difusa ....
Lista desplegable avanzada: Crear rápidamente una lista desplegable   |  Lista desplegable dependiente   |  Lista desplegable de selección múltiple ....
Administrador de columnas: Agregar un número específico de columnas  |  Mover columnas  |  Toggle Estado de visibilidad de columnas ocultas  |  Comparar rangos y columnas ...
Características destacadas: Enfoque de cuadrícula   |  Vista de diseño   |   Gran barra de fórmulas    Administrador de hojas y libros de trabajo   |  Biblioteca de Recursos (Texto automático)   |  Selector de fechas   |  Combinar hojas de trabajo   |  Cifrar/descifrar celdas    Enviar correos electrónicos por lista   |  Súper filtro   |   Filtro especial (filtro negrita/cursiva/tachado...) ...
Los 15 mejores conjuntos de herramientas12 Texto Herramientas (Añadir texto, Quitar caracteres, ...)   |   +50 Tabla Tipos (Diagrama de Gantt, ...)   |   40+ Práctico Fórmulas (Calcular la edad según el cumpleaños, ...)   |   19 Inserción Herramientas (Insertar código QR, Insertar imagen desde la ruta, ...)   |   12 Conversión Herramientas (Números a palabras, Conversión de Moneda, ...)   |   7 Fusionar y dividir Herramientas (Filas combinadas avanzadas, Células partidas, ...)   |   ... y más

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...

pestaña kte 201905


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!
Comments (1)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Why would anyone go for writing a script when there are simpler ways to get a dropdown list???
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations