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.

Tabla de galardones y ganadores en Excel.

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.

Lista de valores únicos para el primer Combobox.

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.

Formulario VBA en Excel con listas dependientes.

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

Formulario en Excel con Cuadros combinados dependientes.

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.

You may also like...