在VBA中使用IPMT函数

在VBA中使用IPMT函数,vba,excel,Vba,Excel,excel中的Ipmt函数计算第n期支付的利息。我编写了一个宏来计算我指定的从第一期到第n期的应付利息总额,并将其放入activecell中。但问题是,我认为在数组的某个地方我做错了,它导致无法获取WorksheetFunction类错误的IPMT属性。你能帮帮我吗 Sub CalculateInterest() Static i As Long Dim j As Integer Dim PD(1 To 2) As Integer For j = 1 To 2 i = Application.W

excel中的Ipmt函数计算第n期支付的利息。我编写了一个宏来计算我指定的从第一期到第n期的应付利息总额,并将其放入activecell中。但问题是,我认为在数组的某个地方我做错了,它导致无法获取WorksheetFunction类错误的IPMT属性。你能帮帮我吗

Sub CalculateInterest()
Static i As Long
Dim j As Integer
Dim PD(1 To 2) As Integer
For j = 1 To 2
i = Application.WorksheetFunction.IPmt(0.18 / 2, PD(j), 2, 108434)
Next j
MsgBox i
ActiveCell.Value = i
End Sub

根据文件,第二个论点应该是

按要求。您希望查找利息的期间 并且必须在1到nper的范围内

在您的情况下,范围为1到2

当前为0,因为您有一个初始值为0,0的数组

您也只是在写最后一个值

你是说:

 i = Application.WorksheetFunction.IPmt(0.18 / 2, j, 2, 108434)
根据您的评论,总结如下:

Option Explicit

Sub CalculateInterest()
   ' Static i As Long '<==should this be Long and static?
    Dim i As Double
    Dim j As Long ' <==Use Long rather than Integer
    Dim PD(1 To 2) As Long
    For j = LBound(PD) To UBound(PD)
        i = i + Application.WorksheetFunction.IPmt(0.18 / 2, j, 2, 108434) 'Per should be in range 1 to 2
    Next j
    ActiveCell = i
End Sub

我希望I计算第一次和第二次的IPMT,将它们相加,然后返回活动单元中第一次和第二次安装的IPMT之和。TBH我想我的代码离我想得到的地方很远:/Thank you@QHarr我很感激