Cómo agregar filtrado de búsqueda a una lista desplegable de Excel con un combobox
🔍 WiseChecker

Cómo agregar filtrado de búsqueda a una lista desplegable de Excel con un combobox

Las listas desplegables estándar de validación de datos de Excel son simples pero carecen de una función de búsqueda. Esto dificulta y hace lento encontrar elementos en listas largas. Puede agregar un filtrado de búsqueda dinámico utilizando un control ActiveX ComboBox. Este artículo explica cómo configurar una lista desplegable con búsqueda en su hoja de cálculo.

Puntos clave: Agregar una lista desplegable con búsqueda

  • Desarrollador > Insertar > Cuadro combinado (Control ActiveX): Coloca un control con búsqueda en su hoja que se puede vincular a una lista de origen.
  • Propiedades del Cuadro combinado > ListFillRange: Define el rango de celdas que contiene la lista maestra de elementos para el control.
  • Código VBA para el evento Change: Filtra los elementos del Cuadro combinado en tiempo real a medida que el usuario escribe en el cuadro de búsqueda.

ADVERTISEMENT

Descripción general del ActiveX ComboBox para búsqueda

Un ActiveX ComboBox es un control de formulario que combina un cuadro de texto con una lista desplegable. A diferencia de una lista de validación de datos estándar, permite a los usuarios escribir caracteres. Luego puede usar código VBA para filtrar los elementos de la lista mostrados según esa entrada escrita. Esto crea una experiencia de búsqueda instantánea mientras se escribe. La configuración requiere una lista de origen de elementos, el propio ComboBox y una breve macro para manejar la lógica de filtrado. Debe habilitar la pestaña Desarrollador en Excel para acceder a los controles necesarios para esta tarea.

Pasos para crear una lista desplegable ComboBox con búsqueda

Siga estos pasos para crear un filtro de búsqueda funcional para su lista. Asegúrese de que su lista maestra de elementos esté en una sola columna en una hoja de cálculo.

  1. Habilitar la pestaña Desarrollador
    Vaya a Archivo > Opciones > Personalizar cinta de opciones. En el panel derecho, marque la casilla Desarrollador y haga clic en Aceptar. La pestaña Desarrollador aparecerá en su cinta de opciones.
  2. Insertar el control ComboBox
    Haga clic en la pestaña Desarrollador. En el grupo Controles, haga clic en Insertar. En Controles ActiveX, haga clic en el icono Cuadro combinado. Haga clic y arrastre en su hoja de cálculo para dibujar el control.
  3. Establecer el rango de datos de origen
    Haga clic derecho en el nuevo ComboBox y seleccione Propiedades. En la ventana Propiedades, busque la propiedad ListFillRange. Ingrese el rango de celdas de su lista maestra, como Sheet1!$A$1:$A$100. Cierre la ventana Propiedades.
  4. Entrar en Modo Diseño y agregar código
    En la pestaña Desarrollador, asegúrese de que Modo Diseño esté resaltado. Haga clic derecho en el ComboBox y seleccione Ver código. Esto abre el editor de Visual Basic para Aplicaciones.
  5. Pegar el código de filtrado
    En la ventana de código, pegue el siguiente script de VBA. Reemplace “Sheet1!$A$1:$A$100” con su dirección ListFillRange real.

    Private Sub ComboBox1_Change()
    Dim srcRange As Range, cell As Range
    Dim matchStr As String
    Me.ComboBox1.Clear
    matchStr = Me.ComboBox1.Text
    Set srcRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:A100")
    If matchStr = "" Then
    For Each cell In srcRange
    If cell.Value <> "" Then Me.ComboBox1.AddItem cell.Value
    Next cell
    Else
    For Each cell In srcRange
    If InStr(1, cell.Value, matchStr, vbTextCompare) > 0 Then
    Me.ComboBox1.AddItem cell.Value
    End If
    Next cell
    End If
    Me.ComboBox1.DropDown
    End Sub

  6. Salir del Modo Diseño y probar
    Cierre el editor de VBA. De vuelta en Excel, en la pestaña Desarrollador, haga clic en Modo Diseño para desactivarlo. Haga clic en su ComboBox y comience a escribir. La lista debe filtrarse para mostrar solo los elementos que contengan el texto escrito.

ADVERTISEMENT

Errores comunes y limitaciones a evitar

El ComboBox no aparece o está atenuado

Los controles ActiveX pueden estar deshabilitados por la configuración del Centro de confianza. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de ActiveX. Seleccione la opción para habilitar todos los controles sin restricciones. Guarde y vuelva a abrir su libro para que el cambio surta efecto.

Al escribir no se muestran resultados filtrados

Esto generalmente significa que el código VBA no se está ejecutando. Asegúrese de que el Modo Diseño esté desactivado en la pestaña Desarrollador. Además, confirme que el código esté en el módulo de hoja correcto. Verifique que la dirección de rango en el código VBA coincida exactamente con la propiedad ListFillRange, incluido el nombre de la hoja de cálculo.

La seguridad de macros impide que funcione la búsqueda

Los libros que contienen macros deben guardarse como Libro de Excel habilitado para macros (.xlsm). Si guarda como un archivo .xlsx estándar, el código VBA se perderá. Al abrir el archivo, debe hacer clic en Habilitar contenido en la barra de advertencia de seguridad para que se ejecuten las macros.

ComboBox vs. Lista desplegable de validación de datos

Elemento ActiveX ComboBox con búsqueda Lista de validación de datos estándar
Función de búsqueda Sí, escriba para filtrar la lista dinámicamente No, solo desplazarse o escribir coincidencia exacta
Complejidad de configuración Requiere código VBA y pestaña Desarrollador Configuración simple mediante Datos > Validación de datos
Interacción del usuario Haga clic en el control, escriba, seleccione de la lista filtrada Haga clic en la flecha, desplácese, haga clic en la selección
Formato de archivo Debe guardarse como archivo habilitado para macros .xlsm Funciona en todos los formatos de archivo de Excel
Ideal para Listas largas donde los usuarios conocen nombres parciales Listas cortas y fijas para entrada de datos consistente

Ahora puede implementar una lista desplegable con búsqueda en sus hojas de cálculo de Excel. Use el ActiveX ComboBox de la pestaña Desarrollador y vincúlelo a su origen de datos. Para listas más dinámicas, explore el uso del ComboBox con un rango de Tabla que se expanda automáticamente. Pruebe usar la propiedad MatchEntry establecida en fmMatchEntryComplete para tener más control sobre el comportamiento de búsqueda.

ADVERTISEMENT