Skip to main content

¿Cómo autocompletar un cuadro de texto al escribir en Excel?

Author: Siluvia Last Modified: 2025-06-04

Por defecto, Excel puede recordar lo que has ingresado en las celdas de la hoja de trabajo actual y autocompletar ese contenido la próxima vez que escribas una letra inicial relacionada en una nueva celda. Sin embargo, si deseas que todo el contenido que has ingresado en la hoja de trabajo se autocomplete en un cuadro de texto (Control ActiveX), ¿cómo podrías hacerlo? Este artículo proporcionará un método VBA para ayudarte a autocompletar un cuadro de texto cuando escribas una letra inicial dentro.

Autocompletar un cuadro de texto al escribir con código VBA


Autocompletar un cuadro de texto al escribir con código VBA

Por favor, sigue los siguientes pasos para hacer que un cuadro de texto se autocomplete al escribir una letra inicial dentro del cuadro de texto.

1. Por favor, inserta un cuadro de texto haciendo clic en Desarrollador > Insertar > Cuadro de Texto (Control ActiveX). Ver captura de pantalla:

click to insert Text Box

2. Luego haz clic en Desarrollador > Insertar > Cuadro de Lista (Control ActiveX) para insertar un cuadro de lista en la hoja de trabajo actual. Ver captura de pantalla:

click to insert List Box

3. Haz clic derecho en la pestaña de la hoja, luego haz clic en Ver Código desde el menú contextual como se muestra en la siguiente captura de pantalla.

click View Code from right click menu

4. En la ventana Microsoft Visual Basic para Aplicaciones, por favor copia y pega el siguiente código VBA en la ventana de Código. Luego haz clic en Herramientas > Referencias, y marca la casilla Microsoft Scripting Runtime en el cuadro de diálogo Referencias – VBAProject. Ver 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

go to References dialog box and check Microsoft Scripting Runtime

Nota: En el código, ListBox1 y Textbox1 son los nombres del cuadro de lista y el cuadro de texto que has insertado en tu hoja de trabajo.

5. Presiona las teclas Alt + Q para salir de la ventana Microsoft Visual Basic para Aplicaciones.

6. Desactiva el Modo Diseño haciendo clic en Desarrollador > Modo Diseño en la hoja de trabajo.

7. Ahora cambia a otra hoja de trabajo y luego regresa a la hoja de trabajo anterior para habilitar el código VBA.

A partir de ahora. Al ingresar una letra inicial en el cuadro de texto, todos los textos que comiencen con esa letra que hayas ingresado en la hoja de trabajo se mostrarán dentro del cuadro de lista ubicado en el lado derecho del cuadro de texto. Haz doble clic en el que necesites para ingresarlo en el cuadro de texto. Ver captura de pantalla:

When entering an initial letter into the textbox, all texts which begin with that letter will be listed

Nota: Puedes usar la tecla de flecha Arriba o Abajo para moverte entre todos los textos de autocompletado en el cuadro de lista, y luego presionar la tecla Intro para ingresar el que necesites en el cuadro de texto.



Artículos relacionados:

Las mejores herramientas de productividad para Office

🤖 Kutools AI Aide: Revoluciona el análisis de datos basado 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 | Redondear...
Super BUSCARV: Búsqueda por varios criterios | Búsqueda de varios valores | Búsqueda en varias hojas | Coincidencia difusa....
Lista desplegable avanzada: Crea 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 | 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 | Administrador de Libro de trabajo y Hoja de cálculo | Biblioteca de AutoTexto | Selector de fechas | Combinar Datos | Cifrar/Descifrar celdas | Enviar correo electrónico por lista | Super Filtro | Filtro especial (filtrar celdas con fuente en negrita/cursiva/tachado...)...
Top15 conjuntos de herramientas:12 herramientas de texto (Agregar texto, Eliminar caracteres específicos, ...) | Más de50 tipos de gráficos (Diagrama de Gantt, ...) | Más de40 fórmulas prácticas (Calcular edad basada en la fecha de nacimiento, ...) |19 herramientas de inserción (Insertar código QR, Insertar imagen desde ruta, ...) |12 herramientas de conversión (Convertir a palabras, Conversión de moneda, ...) |7 herramientas para combinar y dividir (Combinar filas avanzado, Dividir celdas, ...) | ... y más

Potencia tus habilidades en Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...


Office Tab lleva la interfaz de pestañas a Office y facilita mucho tu trabajo

  • Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de nuevas ventanas.
  • ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!