Filtrar nombres a combobox excel vba

Para Dante Amor

Amigo Dante deseo filtrar los nombres de los alumnos de la hojas deudas intenté adecuarlo con el código de otra macro pero tengo errores. Le pido que me lo corrijas

Te envié el archivo a tu email

1 Respuesta

Respuesta
1

H o  l a:

Te anexo las macros que actualicé:

Private Sub Cbocliente_Change()
'Act.Por.Dante Amor
    Dim Total As Integer
    ListaPagos.Clear
    TxtTotal.Text = ""
    TxtDNIcliente = ""
    If Cbocliente.ListIndex = -1 Or Cbocliente = "" Then
        Exit Sub
    End If
    dni = Cbocliente.List(Cbocliente.ListIndex, 1)
    If IsNumeric(dni) Then dni = Val(dni)
    TxtDNIcliente = dni
    Set h = Sheets("deudas")
    Set r = h.Columns("A")
    Set b = r.Find(dni, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            ListaPagos.AddItem h.Cells(b.Row, "A")
            ListaPagos.List(ListaPagos.ListCount - 1, 1) = h.Cells(b.Row, "B")
            ListaPagos.List(ListaPagos.ListCount - 1, 2) = h.Cells(b.Row, "E")
            wtot = wtot + h.Cells(b.Row, "E")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    TxtTotal = wtot
End Sub

Private Sub UserForm_Initialize()
'Act.Por.Dante Amor
    MultiPage1.Font.Size = 18
    Cboespecialidad. AddItem "INICIAL EIB"
    Cboespecialidad. AddItem "PRIMARIA EIB"
    Cbociclo. AddItem "I"
    Cbociclo. AddItem "II"
    Cbociclo. AddItem "III"
    Cbociclo. AddItem "IV"
    Cbociclo. AddItem "V"
    Cbociclo. AddItem "VI"
    Cbociclo. AddItem "VII"
    Cbociclo. AddItem "VIII"
    Cbociclo. AddItem "IX"
    Cbociclo. AddItem "X"
    Cboespecdeuda. AddItem "INICIAL EIB"
    Cboespecdeuda. AddItem "PRIMARIA EIB"
    Cbociclodeuda. AddItem "I"
    Cbociclodeuda. AddItem "II"
    Cbociclodeuda. AddItem "III"
    Cbociclodeuda. AddItem "IV"
    Cbociclodeuda. AddItem "V"
    Cbociclodeuda. AddItem "VI"
    Cbociclodeuda. AddItem "VII"
    Cbociclodeuda. AddItem "VIII"
    Cbociclodeuda. AddItem "IX"
    Cbociclodeuda. AddItem "X"
    CboMotivo. AddItem "TALLER DE CAPACITACIÓN"
    CboMotivo. AddItem "SUBSANACIÓN"
'*-*-*-*-*-*-*-*-*-*-*-*-*
    Set h4 = Sheets("alumnos")
    'h4.Cells.EntireColumn.AutoFit
    'Cbocliente.ColumnCount = 1
    'col = Int(h4.Range("C1").Width) + 1 & ";" & _
          Int(h4.Range("D1").Width) + 1 & ";" & _
          Int(h4.Range("E1").Width)
    'Cbocliente.ColumnWidths = col
    For i = 4 To h4.Range("A" & Rows.Count).End(xlUp).Row
        Cbocliente.AddItem h4.Cells(i, "B")
        Cbocliente.List(Cbocliente.ListCount - 1, 1) = h4.Cells(i, "A")
    Next
     'Para monstrar detalle
    'Set h = Sheets("alumnos")
    'Set r = h.Columns("A")
    'Set b = r.Find(nombre, lookat:=xlWhole)
    'If Not b Is Nothing Then
    '    ncell = b.Address
    '    Do
    '        'detalle
    '        ListaPagos.AddItem h.Cells(b.Row, "A")
    '        ListaPagos.List(ListaPagos.ListCount - 1, 1) = h.Cells(b.Row, "B")
    '        ListaPagos.List(ListaPagos.ListCount - 1, 2) = h.Cells(b.Row, "E")
    '        Set b = r.FindNext(b)
    '    Loop While Not b Is Nothing And b.Address <> ncell
    'End If
End Sub

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

¡Gracias! Dante quedó genial saludos!

Amigo Dante olvidé especificar que los nombres se deben de filtrar de la Hoja deuda y en el Objeto ListaPagos muestra "fecha / motivo / Pago" de la hoja deuda también.

Al final del código fuente está en comentario para que me lo corrija gracias Dante Saludos!

En tu formulario no estaban los títulos del listbox

En tu código esas columnas son las que pude entender, pero te anexo el cambio:

Private Sub Cbocliente_Change()
'Act.Por.Dante Amor
    Dim Total As Integer
    ListaPagos.Clear
    TxtTotal.Text = ""
    TxtDNIcliente = ""
    If Cbocliente.ListIndex = -1 Or Cbocliente = "" Then
        Exit Sub
    End If
    dni = Cbocliente.List(Cbocliente.ListIndex, 1)
    If IsNumeric(dni) Then dni = Val(dni)
    TxtDNIcliente = dni
    Set h = Sheets("deudas")
    Set r = h.Columns("A")
    Set b = r.Find(dni, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            ListaPagos.AddItem h.Cells(b.Row, "C")
            ListaPagos.List(ListaPagos.ListCount - 1, 1) = h.Cells(b.Row, "D")
            ListaPagos.List(ListaPagos.ListCount - 1, 2) = h.Cells(b.Row, "E")
            wtot = wtot + h.Cells(b.Row, "E")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    TxtTotal = wtot
End Sub

Si requieres más cambios crea una nueva pregunta. Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas