A continuación vamos a ver un programa en Excel VBA que crea un formulario de usuario que contiene cuadros combinados dependientes. El formulario de usuario que se va a crear un aspecto de la siguiente manera:

El usuario selecciona los animales en una lista de menú desplegable. Como resultado, el usuario puede seleccionar un animal de una segunda lista desplegable.

Dependent Combo Boxes in Excel VBA

El usuario selecciona los deportes de una lista desplegable. Como resultado, el usuario puede seleccionar un deporte de una segunda lista desplegable.

Dependent Combo Boxes in Excel VBA

Para crear este formulario de usuario, ejecute los siguientes pasos.

  1. Abra el Editor de Visual Basic. Si el Explorador de proyectos no es visible, haga clic en Ver, Explorador de proyectos.

  2. Haga clic en Insertar, formulario de usuario. Si el cuadro de herramientas no aparece automáticamente, haga clic en Ver, Caja de herramientas. Su pantalla debe ser configurado de la siguiente manera.

Userform Screen Setup in Excel VBA

  1. Añadir los cuadros combinados (primero a la izquierda, el segundo a la derecha) y el botón de comando. Una vez que esto se ha completado, el resultado debe ser consistente con la imagen del formulario de usuario mostrado anteriormente. Por ejemplo, crear un control de cuadro combinado haciendo clic en ComboBox desde el cuadro de herramientas.

A continuación, puede arrastrar un cuadro combinado en el formulario de usuario.

  1. Puede cambiar los nombres y los títulos de los controles. Los nombres se utilizan en el código VBA Excel. Los títulos son los que aparecen en la pantalla. Es una buena práctica para cambiar los nombres de los controles, pero no es necesario en este caso, porque sólo tenemos unos pocos controles en este ejemplo. Para cambiar el título del botón formulario de usuario y comandos, haga clic en Ver, Ventana Propiedades y haga clic en cada control.

  2. Para mostrar el formulario de usuario, coloque un botón de comando en la hoja de trabajo y agregue la línea siguiente código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ahora vamos a crear el Sub UserForm_Initialize. Cuando se utiliza el método Show para el formulario de usuario, automáticamente se ejecutará este sub.

  1. Abra el Editor de Visual Basic.

  2. En el Explorador de proyectos, haga clic en UserForm1 y haga clic en Ver código.

  3. Elegir formulario de usuario de la lista desplegable izquierda. Inicializar elegir de la lista desplegable de la derecha.

  4. Se añaden las siguientes líneas de código:

Private Sub UserForm_Initialize()

With ComboBox1

.AddItem "Animals"

.AddItem "Sports"

.AddItem "Food"

End With

End Sub

Explicación: Estas líneas de código llenan el primer cuadro combinado.

Ahora hemos creado la primera parte del formulario de usuario. A pesar de que se ve bien ya, no pasará nada aún cuando seleccionamos un elemento del primer cuadro combinado.

  1. En el Explorador de proyectos, haga doble clic en UserForm1.

  2. Haga doble clic en el primer cuadro combinado.

  3. Añadir las siguientes líneas de código:

Private Sub ComboBox1_Change()

Dim index As Integer

index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index

Case Is = 0

With ComboBox2

.AddItem "Dog"

.AddItem "Cat"

.AddItem "Horse"

End With

Case Is = 1

With ComboBox2

.AddItem "Tennis"

.AddItem "Swimming"

.AddItem "Basketball"

End With

Case Is = 2

With ComboBox2

.AddItem "Pancakes"

.AddItem "Pizza"

.AddItem "Chinese"

End With

End Select

End Sub

Explicación: Excel VBA utiliza el valor del índice variable para probar cada instrucción Case posterior para ver con qué elementos del segundo cuadro combinado se debe llenar. Pasan por nuestro enlace: / VBA-ejemplos-select-caso [Select Case]

programa para aprender más sobre la estructura Select Case.

  1. Haga doble clic en el botón Importar.

  2. Agregue la siguiente línea de código:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Resultado:

Dependent Combo Boxes in Excel VBA