Combo box dependientes en Userforms Excle

Muy amables si me pueden ayudar tengo la siguiente macro que lo que me hace es generar listas dependiente, a partir del primer combobox, (solo el primer combobox se carga automático al iniciar el excel), mi problema es que si quiero cambiar la selección que ya realice en alguno de los combobox previos me da error y activa el depurador

Private Sub ComboBox1_Change()
ComboBox2.Clear
Sheets("Formatos").Select
columna1 = ComboBox1.ListIndex + 1
Cells(2, columna1).Select
ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
For cont = 2 To ultimaFila
If Cells(cont, columna1) <> "" Then
ComboBox2.AddItem (Cells(cont, columna1))

End If

Next

Sheets("Menu").Select
End Sub

Private Sub ComboBox2_Change()
ComboBox3.Clear
Sheets("Tiendas").Select
columna1 = ComboBox2.ListIndex + 1
Cells(2, columna1).Select
ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
For cont = 2 To ultimaFila
If Cells(cont, columna1) <> "" Then
ComboBox3.AddItem (Cells(cont, columna1))

End If

Next

Sheets("Menu").Select
End Sub

Private Sub CommandButton1_Click()
ComboBox3.Clear
ComboBox2.Clear

End Sub

Private Sub UserForm_Activate()
Sheets("Paises").Select

ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
For cont = 1 To ultimaFila

If Cells(cont, 1) <> "" Then
ComboBox1.AddItem (Cells(cont, 1))

End If

Next

Sheets("Menu").Select

End Sub

1 respuesta

Respuesta
1

H   o la:

Hay que verificar en el combobox1 y combobox2 si tienen un dato de la lista. Se verifica con esta instrucción:

If ComboBox1.ListIndex = -1 Then Exit Sub

Quedaría así en los eventos del combobox1 y combobox2:

Private Sub ComboBox1_Change()
    ComboBox2.Clear
    If ComboBox1.ListIndex = -1 Then Exit Sub
    '
    Sheets("Formatos").Select
    columna1 = ComboBox1.ListIndex + 1
    Cells(2, columna1).Select
    ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
    For cont = 2 To ultimaFila
        If Cells(cont, columna1) <> "" Then
            ComboBox2.AddItem (Cells(cont, columna1))
        End If
    Next
    Sheets("Menu").Select
End Sub
'
Private Sub ComboBox2_Change()
    ComboBox3.Clear
    If ComboBox2.ListIndex = -1 Then Exit Sub
    '
    Sheets("Tiendas").Select
    columna1 = ComboBox2.ListIndex + 1
    Cells(2, columna1).Select
    ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
    For cont = 2 To ultimaFila
        If Cells(cont, columna1) <> "" Then
            ComboBox3.AddItem (Cells(cont, columna1))
        End If
    Next
    Sheets("Menu").Select
End Sub
'
Private Sub CommandButton1_Click()
ComboBox3.Clear
ComboBox2.Clear
End Sub
'
Private Sub UserForm_Activate()
Sheets("Paises").Select
ultimaFila = Columns("A:A").Range("A65536").End(xlUp).Row
For cont = 1 To ultimaFila
If Cells(cont, 1) <> "" Then
ComboBox1.AddItem (Cells(cont, 1))
End If
Next
Sheets("Menu").Select
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! 

De verdad trabaja perfecto ahora con la corrección que me realizo, de verdad muchas gracias por su tiempo y su ayuda =) 

Buenas le comento que el problema que me esta presentando es que en la linta que se me carga producto de mi seleccion en el combobox2 solo me incluye por así decirlo las primeras 4 listas de datos en el combobox3, cuando dependiendo de lo seleccionado en el combobox2 debería de buscarme en una lista de 16 columnas y seleccionar la que corresponda y cargarla en el combobox3 

Adicional a esto debo agregar que de las únicas cuatro listas que me carga al final, la más grande no la carga completa

detallo mas o menos como debe trabajar

1 en el primer combo se me cargan los países automáticamente, Costa Rica, Guatemala, El Salvador, etc.

2 en el segundo combo se me cargan los formatos de tiendas según el país: Supermercado, Descuento, Bodega, etc.

3 en el tercer y ultimo combo se me deberían cargar las tiendas que corresponden al formato seleccionado en el combo 2

el problema que esta dando en que por ejemplo sin importar que selección haga siempre me selecciona solo la clasificación de Costa Rica, y el el caso de la lista de descuento que corresponde a costa rica no la selecciona completa.

pero si por ejemplo selecciono el salvador, selecciono luego supermercado, me tendría que cargar las tiendas de formato supermercado que corresponden a el salvador pero me sigue cargando las tiendas de costa rica y sin importar la selección las carga de forma incompleta

La lógica de como cargas los datos en los combos no la modifiqué.

Para entender qué quieres cargar y cómo cargar, tendría que revisar cómo están tus datos.

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos.com dentro del tema de microsoft excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con detalle lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas