Formulario en Excel con Varios Combobox Dependientes

Tengo un Archivo de Excel, en el que manejo Datos de Vehículos, marca, modelo, año, Descripción de Producto, Código de Parte, y Código de Intercambio 1 y código de Intercambio 2, como puedo hacer que en un formulario, al Elegir, La marca, me filtre solo los modelos de Esa marca, y al Elegir la marca, me filtre los modelos, y luego me filtre el año, y así sucesivamente, y en un Listbox, me de los datos de Descripción, Código de Parte, Código de intercambio1 y Código de Intercambio2.

1 respuesta

Respuesta
2

Envíame tu archivo con el formulario para adaptar el código.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario "dgs1938" y el título de esta pregunta.

Listo ya te envíe el Archivo.

Espero y sea entendible.

Te anexo el código para cargar los combos dependientes y el listbox

Private Sub ComboBox1_Change()
    cargar 2
End Sub
Private Sub ComboBox2_Change()
    cargar 3
End Sub
Private Sub ComboBox3_Change()
'Por.Dante Amor
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To 3
            If Cells(i, j) = Controls("ComboBox" & j) Then
                igual = True
            Else
                igual = False
                Exit For
            End If
        Next
        If igual Then
            ListBox1.AddItem Cells(i, "D")
            ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(i, "E")
        End If
    Next
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        agregar ComboBox1, Cells(i, "A")
    Next
End Sub
Sub agregar(combo As ComboBox, dato As String)
'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: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub
Sub cargar(ini)
'Por.Dante Amor
    TextBox1 = ""
    TextBox2 = ""
    ListBox1.Clear
    For i = ini To 3
        Controls("ComboBox" & i) = ""
        Controls("ComboBox" & i).Clear
    Next
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To ini - 1
            valor = IIf(IsNumeric(Controls("ComboBox" & j)), _
                Val(Controls("ComboBox" & j)), Controls("ComboBox" & j))
            If Cells(i, j) = valor Then
                igual = True
            Else
                igual = False
                Exit For
            End If
        Next
        If igual Then agregar Controls("ComboBox" & ini), Cells(i, ini)
    Next
End Sub

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas