Como programar 4 combobox, que no muestren valores repetidos, que uno dependa de la eleccion del anterior

Hace tiempo quiero saber como programar 4 combobox con la siguiente informacion

A                  B             C          D             E            F

Tipo            Color      Año       Mes       Dia        Ruta generada   Verde                                                

Alerta          Amarillo 2015

Boletin        Rojo         2016

                                    2017

Necesito que en Tipo si elijo Boletin o Alerta, me muestre los 3 colores, si elijo verde, me muestre unicamente los años donde hay Alertas Verdes, y despues los meses donde solo hay alertas color verde, y seguidamente me muestre los dias donfe se emitio ese color de alerta en ese mes en ese año, y al ejejir una de las rutas prevismente elaboradas, abra el hiperviculo seleccionado.

1 Respuesta

Respuesta

No entendí bien si son 4, 5 o 6 combobox.

¿En qué fila empiezan los datos?

Tengo una macro diseñada para crecer de 2 a muchos combos, pero los combos deberán llamarse "ComboBox" y el número según la columna, es decir, al combobox1 le corresponde la columna 1, al 2 la columna 2, al 3 la 3; y así sucesivamente.

Te anexo el código para cargar 6 combos.

Al principio de todo el código debe ir la variable Public h

Public h
'Por.Dante Amor
Private Sub ComboBox1_Change()
    Call cargar(2)
End Sub
Private Sub ComboBox2_Change()
    Call cargar(3)
End Sub
Private Sub ComboBox3_Change()
    Call cargar(4)
End Sub
Private Sub ComboBox4_Change()
    Call cargar(5)
End Sub
Private Sub ComboBox5_Change()
    Call cargar(6)
End Sub
'
Private Sub UserForm_Activate()
    Set h = Worksheets("Datos")
    Call cargar(1)
End Sub
'
Sub cargar(ini)
'Por.Dante Amor
    For i = ini To 6
        Controls("ComboBox" & i).Clear
    Next
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        igual = True
        For j = 1 To ini - 1
            If IsNumeric(Controls("ComboBox" & j).Value) Then
                dato = Val(Controls("ComboBox" & j).Value)
            Else
                dato = Controls("ComboBox" & j).Value
            End If
            If h.Cells(i, j) <> dato Then igual = False
        Next
        If igual Then Call agregar(Controls("ComboBox" & ini), h.Cells(i, ini), i)
    Next
End Sub
'
Sub agregar(combo As ComboBox, dato As String, fila)
'Por.Dante Amor
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
            Case 1
                combo.AddItem dato, i
                combo.List(combo.ListCount - 1, 1) = fila
                Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
    combo.List(combo.ListCount - 1, 1) = fila
End Sub

En el evento Activate, cambia "Datos" por el nombre de la hoja donde tienes tu información.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas