Sumar valores de una hoja excel a partir de un ComboBox y el resultado mostrarlo en un TextBox

Necesito que en un formulario donde tengo un ComboBox y un TextBox al filtrar en el ComboBox un nombre se sume los valores que hay en una hoja excel y el resultado se muestre en el TextBox.

1 respuesta

Respuesta
1

H o l a:

Te anexo el código para sumar las deudas y mostrar el total:

Private Sub ComboBox1_Change()
'Act.Por.Dante Amor
    NOMBRES = ""
    APELLIDOS = ""
    If ComboBox1 = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Then Exit Sub
    f = ComboBox1.ListIndex + 2
    Set h2 = Sheets("DEUDAS CLIENTES")
    NOMBRES = h2.Cells(f, "C")
    APELLIDOS = h2.Cells(f, "D")
    '
    Set r = h2.Columns("B")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            wtot = wtot + h2.Cells(b.Row, "E")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    '
    'Set h3 = Sheets("PAGO DEUDA CLIENTE")
    'Set r = h3.Columns("B")
    'Set b = r.Find(ComboBox1, lookat:=xlWhole)
    'If Not b Is Nothing Then
    '    ncell = b.Address
    '    Do
    '        wpag = wpga + h3.Cells(b.Row, "F")
    '        Set b = r.FindNext(b)
    '    Loop While Not b Is Nothing And b.Address <> ncell
    'End If
    'DEUDA = wtot - wpag
    DEUDA = wtot
End Sub

Aprovecho para comentarte, si quieres el saldo de la persona, entonces tienes que sumar las deudas y restarle los pagos que haya realizado, entonces utiliza la siguiente macro:

Private Sub ComboBox1_Change()
'Act.Por.Dante Amor
    NOMBRES = ""
    APELLIDOS = ""
    If ComboBox1 = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Then Exit Sub
    f = ComboBox1.ListIndex + 2
    Set h2 = Sheets("DEUDAS CLIENTES")
    NOMBRES = h2.Cells(f, "C")
    APELLIDOS = h2.Cells(f, "D")
    '
    Set r = h2.Columns("B")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            wtot = wtot + h2.Cells(b.Row, "E")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    '
    Set h3 = Sheets("PAGO DEUDA CLIENTE")
    Set r = h3.Columns("B")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            wpag = wpga + h3.Cells(b.Row, "F")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    DEUDA = wtot - wpag
    'DEUDA = wtot
End Sub

Dante, primero quiero agradecerte por tu ayuda, efectivamente necesito el saldo de la persona, pero surge un problema cuando quiero abonar por tercera vez a la misma persona toma el primer remanente y no el último. Por ejemplo el último remanente es 17000 y toma el remanente=22000. Por favor tu ayuda.

En esta línea dice wpga, debe decir wpag.

wpag = wpag + h3.Cells(b.Row, "F")

Te anexo la macro completa:

Private Sub ComboBox1_Change()
'Act.Por.Dante Amor
    NOMBRES = ""
    APELLIDOS = ""
    If ComboBox1 = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Then Exit Sub
    f = ComboBox1.ListIndex + 2
    Set h2 = Sheets("DEUDAS CLIENTES")
    NOMBRES = h2.Cells(f, "C")
    APELLIDOS = h2.Cells(f, "D")
    '
    Set r = h2.Columns("B")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            'detalle
            wtot = wtot + h2.Cells(b.Row, "E")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    '
    Set h3 = Sheets("PAGO DEUDA CLIENTE")
    Set r = h3.Columns("B")
    Set b = r.Find(ComboBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            wpag = wpag + h3.Cells(b.Row, "F")
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    DEUDA = wtot - wpag
    'DEUDA = wtot
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas