Combobox dependientes en Formulario de Excel usando VBA
En este tutorial veremos la manera en la que podremos desarrollar un Formulario en Excel VBA con un par de Combobox dependientes. Al momento de elegir un valor de un primer Cuadro combinado, se desplegará en el segundo Cuadro combinado otra lista dependiendo del valor de la primera lista.
Seguiremos los siguiente pasos:
-
Convertimos a Tabla el rango con los valores a mostrar.
-
Creamos una Tabla dinámica para mostrar los valores únicos y crear la primera lista.
-
Usamos una fórmula para hacer la segunda lista en base al valor elegido de la primera lista.
-
Definimos un nombre que contenga la fórmula anterior.
-
Desarrollamos el Formulario.
Ver video Combobox dependientes en Formulario de Excel VBA
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Rango de valores
Tenemos un rango de valores con dos columnas. La primera columna contiene el dato de los galardones del Premio Nobel y en la columna B tenemos los ganadores. Convertimos a Tabla ese rango presionando la combinación de teclas Control + T y le ponemos el nombre de TablaNombres.
Figura 1. Tabla de galardones y ganadores en Excel.
Tabla dinámica para mostrar valores únicos
Para crear nuestra primera lista hacemos una Tabla dinámica donde mostremos los valores únicos de los galardones. Ésta será nuestra primera lista.
-
En la hoja Datos elegimos la tabla TablaNombres.
-
Nos vamos a la pestaña Insertar > Tabla dinámica.
-
Elegimos Hoja de cálculo existente y seleccionamos la hoja Selección y la celda A1.
-
Movemos el campo GALARDÓN a la sección Valores.
-
Nos vamos a la pestaña Diseño > Totales generales > Desactivado para filas y columnas.
Figura 2. Lista de valores únicos para el primer Combobox.
Fórmula para obtener la segunda lista
Tomaremos la fórmula utilizada en el Video 6 del curso de Validación de datos donde vemos Listas dependientes y la usaremos para este ejemplo. Tomaremos la fórmula y la adecuamos a la Tabla de galardones. Esta fórmula tomará el valor elegido de la primera lista y generará la segunda lista.
=DESREF(Datos!$A$1,COINCIDIR(Selección!$C$2,TablaNombres[[#Todo],[GALARDON]],0)-1,1,CONTAR.SI(TablaNombres[[#Todo],[GALARDON]],Selección!$C$2),1)
Crear nombre definimos con fórmula
Para poder usar la fórmula anterior en el segundo Combobox la insertaremos dentro de un nombre definido.
-
Nos vamos a la pestaña Fórmulas > Administrador de nombres.
-
Nuevo.
-
En Nombre le podemos SegundaLista.
-
En Se refiere a;, pegamos la fórmula anterior.
Formulario con Combobox dependientes
Entramos al IDE de VBA (Visual basic para aplicaciones) e Insertamos un nuevo Formulario. Le añadimos dos Combobox, dos Etiquetas y un Botón.
Figura 3. Formulario VBA en Excel con listas dependientes.
Código VBA de la macro
El siguiente código VBA será el código del Formulario. Damos clic derecho sobre una parte vacía del Formulario y elegimos Ver código.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Private Sub UserForm_Initialize() ThisWorkbook.Sheets("Selección").Range("C2").ClearContents Me.ComboBox1.MatchEntry = fmMatchEntryFirstLetter Me.ComboBox1.Style = fmStyleDropDownList ThisWorkbook.Sheets("Selección").PivotTables(1).RefreshTable Filas = Application.WorksheetFunction.CountA(ThisWorkbook.Sheets("Selección").Range("A:A")) For i = 2 To Filas Me.ComboBox1.AddItem ThisWorkbook.Sheets("Selección").Cells(i, 1).Value Next i End Sub Private Sub ComboBox1_Change() ThisWorkbook.Sheets("Selección").Range("C2").Value = Me.ComboBox1.Value Me.ComboBox2.Value = "" Me.ComboBox2.RowSource = "SegundaLista" End Sub Private Sub CommandButton1_Click() Unload Me End Sub
Figura 4. Formulario en Excel con Cuadros combinados dependientes.
Descarga el archivo de ejemplo
Combobox dependientes en Formulario VBA – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.