Como anidar 3 tablas en Excel usando el UserForms de VBA?

Estoy actualmente trabajando en un formulario de consulta y el usuario debe elegir un "Capitulo" de la lista 1, y dependiendo de su elección la lista 2 le debe mostrar los "Subcapitulos" que le corresponden y dependiendo del que elija en la lista 3 le deben salir los "Items" que le pertenecen al "Subcapitulo", pero no se como anidar esas Combobox (o según excel "cuadro combinado") para que dependan del otro y me muestren lo que necesito. Espero haberme echo entender y resolvere cualquier inquietud.

1 respuesta

Respuesta
1

Juan Arango,

Adjunto enlace archivo excel con el desarrollo de tu consulta para su revisión.

Espero que te sirva de ayuda y este acorde a tu necesidad. Cualquier consulta estaré pendiente.

Por favor no olvidar de valorar las respuestas. Muchas Gracias!

Como anidar 3 tablas en excel usando combobox

Ander GS

¡Gracias! Aun no lo he adecuado a mi código, pero viendo lo que has hecho puedo ver que me va a ser de ayuda. De igual forma si me surge alguna duda te lo haré saber.

Hola Ander GS, tu código me ha estado funcionando muy bien, pero para que en la primer lista se me muestren los elementos debo adicionar este código a la plantilla del formulario

Private Sub UserForm_Click()
Dim rango, celda As Range
Set rango = Worksheets("Datos").Range("Nom_Cap")
For Each celda In rango
    cbxcap.AddItem celda.Value
Next celda
End Sub

Eso es normal o como puedo hacer para que me funcione sin ese código, ademas me gustaria pedirte el favor si me podrías explicar el código que me diste paso a paso.
Muchas Gracias de Antemano

Juan Arango,

En el ejemplo que te proporcioné, la primera lista se rellena en el primer combo cuando se ejecuta la macros que esta en el módulo estandar, mediante el botón "Mostrar Formulario" que se encuentra en la hoja de cálculo.

Pero aparentemente deseas llenar la lista cuando se muestra o inicie el formulario, en tal sentido debes usar el evento INITIALIZE, en tu caso estas usando el evento CLICK. Muestro el código adaptado a tu necesidad.

Private Sub UserForm_Initialize()
For i = 1 To Range("Nom_Cap").Rows.Count
    cbxcap.AddItem Range("Nom_Cap").Cells(i, 1)
Next i
End Sub

Adjunto código para el evento CHANGE correspondiente al combo de Capítulos.

Private Sub ComboBox1_Change()
'Este evento se ejecuta cada vez que el combo muestra un elemento diferente o cambia de valor.
ComboBox2.Clear 'Se limpia la lista del combo SubCapítulos
'Se Agrega la lista de subcapitulos en el combo2, según el capítulo seleccionado en el combo1
For i = 1 To Range("CAP_SUBCAP").Rows.Count
    If Range("CAP_SUBCAP").Cells(i, 1) = ComboBox1.Text Then
        ComboBox2.AddItem Range("CAP_SUBCAP").Cells(i, 2)
    End If
Next i
End Sub

Para el evento CHANGE del combo de SubCapítulos tienen igual procedimiento.

Espero que te haya orientado mejor y este acorde a tu necesidad.

Por favor, no olvidar de valorar las respuestas.

¡Gracias! Magnifica tu ayuda, me queda mucho más claro el funcionamiento, te lo agradezco mucho espero poder seguir consultándote en caso de más dudas.

Que bueno que de a pocos estés teniendo mejor claridad sobre el tema, esa es la idea de poder ayudar a que podamos entender mejor VBA.

Cualquier consulta estaré pendiente. Por favor no olvidar de valorar las respuestas que te han sido satisfactorias.

Ander GS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas