0
这是我第一次尝试编写VBA代码,所以我知道它可能相当笨拙,有些冗余。我正试图设计一个按钮,以确定在给定每周收益金额的情况下还清总债务需要多长时间。债务计算器上的利息应计循环 - VBA exel
我遇到的一个问题是应付还没有被应用的贷款的利息应计。这是我的电子表格的样子:
这是我与我的尝试VBA代码在累积在**的兴趣:
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
任何思考这个问题专门和/或使代码更高效的改进?