Vincular Combobox entre si desde una base de datos vertical

"para Dante Amor"

Tengo unas consultas, el archivo me a funcionado bien pero quisiera realizar una modificación en como alimentar, los combobox 1 2 y 3 (desde una bbdd de forma horizontal a vertical). (Ya creo la consulta en la pagina todo expert0).

Alimentar los combobox1 (Columna A), combobox2 (Columna B), combobox3 (Columna C) de la BBDD IDEAL (Hoja7)

- Que en el Combobox1 no se repitan los nombres repetidos de la columna A (debe aparecer máximo 1 vez).

- Que en el Combobox2 solo aparezca la información de los clientes vinculados a los Planner seleccionado en el Combobox1

- Que en el ComboBox3 solo muestre la información de Campañas que están vinculadas al cliente seleccionado en el combobox2

Ejemplo

En combobox1 solo me debería aparecer 1 vez CALVETE NAVARRO, DANIEL, pese a existir en la BBDD 27 veces.

Respuesta
1

H o l a:

Me puedes enviar tu archivo con el formulario.

Recuerda poner en el asunto nombre de usuario.

Sal u dos

H o l a:

Te anexo el código para realizar las cargas:

Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h1 = Sheets("BBDD IDEAL")
    For i = 2 To h1.Cells(Rows.Count, "A").End(xlUp).Row
        agregar ComboBox1, h1.Cells(i, "A")     'Carga Combo PLANNER
    Next
    'For i = 2 To Hoja5.Range("A" & Rows.Count).End(xlUp).Row
    '    ComboBox5.AddItem Hoja5.Cells(i, "A")                           'Carga Combo FECHA
    'Next
    For i = 6 To 24
        Me.Controls("ComboBox" & i).RowSource = Hoja5.Name & "!B2:B25"  'Carga Combo HORAS
    Next
    For i = 25 To 43
        Me.Controls("ComboBox" & i).RowSource = Hoja5.Name & "!C2:C12"  'Carga Combo MIN
    Next
    f = 2
    For i = 30 To 48
        Me.Controls("Label" & i) = Hoja5.Cells(f, "D")                  'Carga ETIQUETAS
        f = f + 1
    Next
End Sub
'
Sub agregar(combo As ComboBox, dato As String)
'por.Dante Amor agrega los item únicos y en orden alfabético
    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: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub
'
Private Sub ComboBox1_Change()
'Por.Dante Amor
    '***Carga CLIENTES
    ComboBox2.Clear
    ComboBox3.Clear
    If ComboBox1 = "" Or ComboBox1.ListIndex = -1 Then Exit Sub
    For i = 2 To h1.Cells(Rows.Count, "A").End(xlUp).Row
        If h1.Cells(i, "A") = ComboBox1 Then
            Call agregar(ComboBox2, h1.Cells(i, "B"))
        End If
    Next
End Sub
'
Private Sub ComboBox2_Change()
'Por.Dante Amor
    '***Carga CAMPAÑA
    ComboBox3.Clear
    If ComboBox2 = "" Or ComboBox2.ListIndex = -1 Then Exit Sub
    For i = 2 To h1.Cells(Rows.Count, "A").End(xlUp).Row
        If h1.Cells(i, "A") = ComboBox1 And _
           h1.Cells(i, "B") = ComboBox2 Then
            Call agregar(ComboBox3, h1.Cells(i, "C"))
        End If
    Next
End Sub

[code]':)
'Saludos. Dante Amor Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas