Realizar pago y copiar datos en excel vba

Amigo Dante Deseo que se copien los datos al realizar los pagos a la hoja Pagos y se borren automáticamente las deudas del alumno de la hoja deudas gracias por su atención.

1 respuesta

Respuesta
1

H o l a:

Envíame un correo nuevo, en el asunto pon tu nombre de usuario. En el archivo me explicas con un ejemplo lo que debe suceder.

ya te envíe gracias por la ayuda!

Te regreso el código

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
    '
    Set h = Sheets("deudas")
    Set b = h.Range("B:B").Find(Cbocliente, lookat:=xlWhole)
    If Not b Is Nothing Then
        'dni = Cbocliente.List(Cbocliente.ListIndex, 1)
        dni = b.Offset(0, -1)
        TxtDNIcliente = dni
    End If
    '
    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

Te anexo la actualización

Private Sub CommandButton5_Click()  'Realizar Pago
'Por.Dante Amor
    If TxtFechapagos = "" Or Not IsDate(TxtFechapagos) Then
        MsgBox "Captura una fecha válida"
        TxtFechapagos.SetFocus
        Exit Sub
    End If
    '
    If Cbocliente = "" Or Cbocliente.ListIndex = -1 Then
        MsgBox "Selecciona un cliente"
        Cbocliente.SetFocus
        Exit Sub
    End If
    '
    una = True
    Set h1 = Sheets("deudas")
    Set h2 = Sheets("Pagos")
    For i = h1.Range("B" & Rows.Count).End(xlUp).Row To 5 Step -1
        If h1.Cells(i, "B") = Cbocliente Then
            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
            h2.Cells(u, "B") = TxtFechapagos
            h2.Cells(u, "C") = h1.Cells(i, "A")
            h2.Cells(u, "D") = h1.Cells(i, "B")
            h2.Cells(u, "E") = h1.Cells(i, "C")
            h2.Cells(u, "F") = h1.Cells(i, "D")
            h2.Cells(u, "G") = h1.Cells(i, "E")
            If una Then h2.Cells(u, "H") = CDbl(TxtTotal)
            una = False
            h1.Rows(i).Delete
        End If
    Next
    ListaPagos.Clear
    Cbocliente.Clear
    TxtDNIcliente = ""
    TxtTotal = ""
    For i = 5 To h1.Range("B" & Rows.Count).End(xlUp).Row
        Call agregar(Cbocliente, h1.Cells(i, "B"))
    Next
    MsgBox "Pago realizado"
End Sub

¡Gracias Dante bendiciones! 

Hola Dante.

Una aclaración de esta parte del código de la respuesta, le entiendo hasta cierta parte.

 una = True
        For i = h1.Range("B" & Rows.Count).End(xlUp).Row To 5 Step -1
             .
                una = False
            h1.Rows(i).Delete
        End If
    Next

saludos!!!

Lo que hace es un ciclo, desde la última fila con datos de la columna B hasta la fila 5, lo hace en cuenta regresiva, por eso el -1

La variable una, la utilizo como una bandera, para que solamente se ejecute la primera vez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas