Combos vinculados entre si en hoja Excel

Para Dante.

Hola Dante, me ayudaste con un código para un form Excel donde ponía "marca" y "modelo" y debían estar vinculados entre si, y así fue.

Ahora necesito me ayudes si puedes de nuevo. Por mucho que intento adaptar el código que hiciste no consigo hacerlo funcionar en esta hoja. Te envío pantallazos.

En la columna "C" aparecen los períodos que quiero poner en el Combo de "Período Facturación", y depende del período que seleccione quiero que en el Combo de "Núm. Factura" solo me permita escoger las facturas relacionadas.

Las hojas se llaman, "DatosSolred" donde están los datos a escoger y "PanelSOLRED" donde están los Combo.

Te envío el código que he intentado adaptar para ver si ves donde estoy equivocándome. El código lo tengo al activar la hoja "PanelSOLRED" que es donde están los Combo. El combo de los periodos parece que lo hace bien, pero el de las facturas no da ningún dato.

Private Sub ListPeriodoSOLRED_Change()
'Por. Dante Amor
    ListFacturaSOLRED.Clear
    ListFacturaSOLRED.Value = ""
    If ListPeriodoSOLRED.Value = "" Or ListPeriodoSOLRED.ListIndex = -1 Then
        Exit Sub
    End If
    For i = 2 To h1.Range("C" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "C") = ListPeriodoSOLRED Then
            agregarPSolred ListFacturaSOLRED, h1.Cells(i, "A")
        End If
    Next
End Sub
Private Sub Worksheet_Activate()
'Por.Dante Amor
    Set h1 = Sheets("DatosSolred")
    For i = 2 To h1.Range("C" & Rows.Count).End(xlUp).Row
        agregarPSolred ListPeriodoSOLRED, h1.Cells(i, "C")
    Next
    'Propiedad para elegir únicamente datos del list
    'ListFacturaSOLRED.Style = fmStyleDropDownList
    'ListPeriodoSOLRED.Style = fmStyleDropDownList
End Sub
Sub agregarPSolred(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
            Case 1: combo.AddItem dato, i: Exit Sub
        End Select
    Next
    combo.AddItem dato
End Sub

1 respuesta

Respuesta
1

Tienes esto al inicio de todo el código

Dim h1

Los combos son controles de activex creados en la hoja?

No lo tenía, lo acabo de poner. Y el segundo desplegable no recoge los datos de las facturas.

Dim h1
Private Sub CommandButton1_Click()
Sheets("PanelPrincipal").Select
End Sub
Private Sub CommandButton2_Click()
SalirAplicacion
End Sub
Private Sub ListPeriodoSOLRED_Change()
'Por. Dante Amor
    ListFacturaSOLRED.Clear
    ListFacturaSOLRED.Value = ""
    If ListPeriodoSOLRED.Value = "" Or ListPeriodoSOLRED.ListIndex = -1 Then
        Exit Sub
    End If
    For i = 2 To h1.Range("C" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "C") = ListPeriodoSOLRED Then
            agregarPSolred ListFacturaSOLRED, h1.Cells(i, "A")
        End If
    Next
End Sub
Private Sub Worksheet_Activate()
'Por.Dante Amor
    Set h1 = Sheets("DatosSolred")
    For i = 2 To h1.Range("C" & Rows.Count).End(xlUp).Row
        agregarPSolred ListPeriodoSOLRED, h1.Cells(i, "C")
    Next
    'Propiedad para elegir únicamente datos del list
    'ListFacturaSOLRED.Style = fmStyleDropDownList
    'ListPeriodoSOLRED.Style = fmStyleDropDownList
End Sub
Sub agregarPSolred(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
            Case 1: combo.AddItem dato, i: Exit Sub
        End Select
    Next
    combo.AddItem dato
End Sub

Los combos son controles de activex creados en la hoja? Si, lo son.

Moisés.

Si en la columna C tienes un número, entonces cambia esta línea:

If h1.Cells(i, "C") = ListPeriodoSOLRED Then

Por esta:

If h1.Cells(i, "C") = Val(ListPeriodoSOLRED) Then

Pero si tienes una fecha con formato "AAAAMM", entonces cambia la línea, por esta:

If h1.Cells(i, "C") = CDate(ListPeriodoSOLRED) Then

Me di cuenta de otro detalle en el código, después de esta línea:

Private Sub Worksheet_Activate()

Agrega esta línea:

 ListPeriodoSOLRED. Clear


.

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

.

Avísame cualquier duda

.

Hola Dante, sigue sin funcionar. Me da este error.

Gracias.

Moisés.

Dante, he encontrado el error, además de rectificar las líneas que me dijiste. Luego de repasar muchísimas veces me he dado cuenta que el combo se llama ListFacturasSOLRED, no ListFacturaSOLRED.

Faltaba una "s".

Ahora funciona. Perdona sinceramente el tiempo que te haya podido hacer perder.

Muchas gracias!

Moisés.

Eso no lo podía saber, ya que no tengo los controles, pero que bueno que ya quedó. Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas