KutoolsforOffice — Una solución, cinco potentes herramientas.Lograr más con menos esfuerzo.Venta de marzo: 20 % de descuento

¿Cómo autocompletar un cuadro de texto mientras escribes en Excel?

AutoraSiluvia Fecha de modificación

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:

haga clic para insertar un cuadro de texto

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:

haga clic para insertar un cuadro de lista

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.

vaya a Ver código desde el menú contextual

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

vaya al cuadro de diálogo Referencias y active Microsoft Scripting Runtime

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:

Al introducir una letra inicial en el cuadro de texto, se mostrarán todos los textos que comiencen por dicha letra

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:

Las mejores herramientas de productividad para Office

🤖KUTOOLS AI Asistente: Revolucione Análisis de datos basándose en:Ejecución Inteligente   |  Generar código|  Crear fórmulas personalizadas  |  Analizar datos y generar gráficos|  Invocar Funciones mejoradas
Funciones populares:Buscar, resaltar o Marcar duplicados   |  Eliminar filas en blanco   |  Combinar Columnas o celdas sin perder datos   |   Redondeo sin usar fórmulas...
Super BUSCARV:Búsqueda vertical (VLookup) con múltiples criterios  |  Búsqueda vertical (VLookup) con múltiples valores  |   Búsqueda vertical (VLookup) entre varias hojas   |   Coincidencia difusa....
Lista desplegable avanzada:Crear rápidamente una lista desplegable   |  Lista desplegable dependiente   |  Lista desplegable de selección múltiple....
Gestor de columnas:Añadir un número específico de columnas|Mover columnas|Alternar el estado de visibilidad de columnas ocultas|Comparar rangos y columnas...
Funciones destacadas:Cuadrícula de enfoque   |  Vista de diseño   |Barra de fórmulas mejorada   | Gestor de libros y hojas   |  Biblioteca de recursos(Texto automático)|  Selector de Fecha   |  Combinar Hojas de Cálculo  |  Cifrar/Descifrar celdas   | Enviar correos electrónicos desde una lista   |  Super Filtro   |   Filtro especial(Filtrar celdas con fuente en negrita/cursiva/tachado...) ...
Principales conjuntos de herramientas 15:12 Herramientasde texto(Agregar texto,Eliminar caracteres específicos, ...)|   50+Tiposde gráfico(Diagrama de Gantt, ...)|   40+ Fórmulas prácticas(Calcular la edad basada en la fecha de nacimiento, ...)|   19 Herramientasde inserción(Insertar Código QR,Insertar imagen desde ruta, ...)|   12 Herramientasde conversión(Convertir a palabras,Conversión de moneda, ...)|   7 Herramientasde combinación y división(Combinar filas avanzado,Dividir celdas, ...)|...y muchas más
Use Kutools en su idioma preferido: compatible con inglés, español, alemán, francés, chino y 40+ más idiomas.¡

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.

ExcelWordOutlookTabsPowerPoint
  • 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