Programar Combobox Dependientes VBA Userform

Con respecto a su codigo que me proporciono hace unos dias que me fue de gran utilidad en mi archivo, solo una pregunta, como puedo volver dependiente el Combobox2 del 1.

Adjunto su Código ejemplo:

Private Sub ComboBox1_Enter()
Dim Fila As Long
Dim Final As Long
Dim Lista As String
For Fila = 1 To ComboBox1.ListCount
    ComboBox1.RemoveItem 0
Next Fila
    Final = GetUltimoR(Hoja16)
    For Fila = 2 To Final
        Lista = Hoja16.Cells(Fila, 1)
        existe = False
        For i = 0 To ComboBox1.ListCount - 1
            If ComboBox1.List(i) = Lista Then existe = True
        Next
        If existe = False Then ComboBox1.AddItem (Lista)
    Next
End Sub
Private Sub ComboBox2_Enter()
Dim Fila As Long
Dim Final As Long
Dim Lista As String
For Fila = 1 To ComboBox2.ListCount
    ComboBox2.RemoveItem 0
Next Fila
    Final = GetUltimoR(Hoja16)
    For Fila = 2 To Final
        Lista = Hoja16.Cells(Fila, 8)
        existe = False
        For i = 0 To ComboBox2.ListCount - 1
            If ComboBox2.List(i) = Lista Then existe = True
        Next
        If existe = False Then ComboBox2.AddItem (Lista)
    Next
End Sub

1 respuesta

Respuesta
1

Cambia todo tu código por el siguiente código:

Private Sub ComboBox1_Change()
'Por Dante Amor
    ComboBox2.Clear
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then
        Exit Sub
    End If
    '
    For i = 2 To GetUltimoR(Hoja16)
        If Hoja16.Cells(i, "A").Value = ComboBox1.Value Then
            ComboBox2.AddItem Hoja16.Cells(i, "H").Value
        End If
    Next
End Sub
'
Private Sub ComboBox1_Enter()
    ComboBox1.Clear
    ComboBox2.Clear
    For Fila = 2 To GetUltimoR(Hoja16)
        Lista = Hoja16.Cells(Fila, 1)
        existe = False
        For i = 0 To ComboBox1.ListCount - 1
            If ComboBox1.List(i) = Lista Then existe = True
        Next
        If existe = False Then ComboBox1.AddItem (Lista)
    Next
End Sub

[Sal u dos, no olvides valorar la respuesta.

Su condigo funciono, ahora el Combobox2 depende del 1, pero aparece la lista completa de productos en el Combobox2, en el codigo anterior aparecian resumidos los conceptos (ya que varios se repiten en la lista).

¿Cómo podria volver a reducir la lista con los valores repetidos? Del combobox2 

Va el código actualizado

Private Sub ComboBox1_Change()
'Por Dante Amor
    ComboBox2.Clear
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then
        Exit Sub
    End If
    '
    For i = 2 To GetUltimoR(Hoja16)
        If Hoja16.Cells(i, "A").Value = ComboBox1.Value Then
            existe = False
            For j = 0 To ComboBox2.ListCount - 1
                If ComboBox2.List(j) = Hoja16.Cells(i, "H").Value Then existe = True
            Next
            If existe = False Then ComboBox2.AddItem Hoja16.Cells(i, "H").Value
        End If
    Next
End Sub
'
Private Sub ComboBox1_Enter()
    ComboBox1.Clear
    ComboBox2.Clear
    For Fila = 2 To GetUltimoR(Hoja16)
        Lista = Hoja16.Cells(Fila, 1)
        existe = False
        For i = 0 To ComboBox1.ListCount - 1
            If ComboBox1.List(i) = Lista Then existe = True
        Next
        If existe = False Then ComboBox1.AddItem (Lista)
    Next
End Sub

[no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas