Dies ist mein erster Versuch, VBA-Code zu schreiben, so dass ich weiß, dass es wahrscheinlich ziemlich klobig mit einigen Redundanzen ist. Ich versuche, einen Button zu entwerfen, der bestimmt, wie lange es dauern wird, um die Gesamtschuld abzubezahlen, bei einer wöchentlichen Auszahlungssumme.Loop für Zinsabgrenzung auf einem Schuldenrechner - VBA exel
Worauf ich ein Problem habe, sind die Zinsabgrenzungen für die Kredite, wo die Zahlungen noch nicht angewendet werden. Dies ist, was meine Tabelle wie folgt aussieht:
Und das ist mein VBA-Code mit meinem Versuch ist das Interesse an ** bei anfallenden:
Private Sub CommandButton1_Click()
Dim x As Single
Dim y As Single
Dim z As Single
Dim Weeks As Integer
Dim Years As Single
Range("C3:H10").Copy Range("C13")
y = Range("H20")
x = Range("H13").Activate
Do While y > 0
x = ActiveCell - Range("A5")
**Range("H14").Value = Range("E14") * ((1 + Range("G14"))^Range("A3"))
Range("H15").Value = Range("E15") * ((1 + Range("G15"))^Range("A3"))
Range("H16").Value = Range("E16") * ((1 + Range("G16"))^Range("A3"))
Range("H17").Value = Range("E17") * ((1 + Range("G17"))^Range("A3"))
Range("H18").Value = Range("E18") * ((1 + Range("G18"))^Range("A3"))
Range("H19").Value = Range("E19") * ((1 + Range("G19"))^Range("A3"))**
If x < 0 And ActiveCell.Value = 0 Then
ElseIf x < 0 Then
ActiveCell.Value = 0
ActiveCell.Offset(0, -3).Value = 0
ActiveCell.Offset(1, 0).Activate
ActiveCell.Value = ActiveCell + x
x = ActiveCell
Else
ActiveCell.Value = x
ActiveCell.Offset(0, -3).Value = x
ActiveCell.Value = ActiveCell.Offset(0, -3).Value * ((ActiveCell.Offset(0, -1).Value + 1)^Range("A3"))
x = ActiveCell
End If
y = Range("H20")
Weeks = Weeks + 1
Loop
z = Range("H20")
Years = Round((Weeks/52.14), 2)
Range("C13:H20").ClearContents
MsgBox ("It will take " & Years & " years to pay off your debt.")
Worksheets("Investment Income").Range("B7").Value = Years
Worksheets("Investment Income").Range("B8").Value = Abs(z)
End Sub
Irgendwelche Gedanken zu diesem Thema gesagt und/oder Verbesserungen, um Code effizienter zu machen?