Share via


NPer 函式

更新:2007 年 11 月

傳回 Double,指定以定期固定付款和固定利率為基礎的年金期數。

Function NPer( _
   ByVal Rate As Double, _
   ByVal Pmt As Double, _
   ByVal PV As Double, _
   Optional ByVal FV As Double = 0, _
   Optional ByVal Due As DueDate = DueDate.EndOfPeriod _
) As Double

參數

  • Rate
    這是必要項。Double 指定每一期的利率。例如,如果您的汽車貸款年利率 (APR) 為 10% 並採月付方式償還,則每期的利率為 0.1/12,也就是 0.0083。

  • Pmt
    必要項。Double,指定每一期的應付款。付款通常包含在年金期限內不會變更的本金和利息。

  • PV
    必要項。Double,指定一系列遠期付款或遠期收入的現值或今天的值。例如,當您貸款買車時,貸款金額就是您要以每月支付方式付給貸方的車款金額現值。

  • FV
    這是選擇項。Double 指定在最後一次付款之後,您想要的未來值或現金結存。例如,貸款的未來值為 $0,因為是代表最後一期付款之後的值。不過,如果您想要在 18 年期間存 50,000 美元做為子女教育費用,那麼 50,000 美元就是這個未來值。如果省略,則假設為 0。

  • Due
    選擇項。DueDate 列舉型別型別的物件,指定付款何時到期。這個引數必須是 DueDate.EndOfPeriod (若付款期限是付款期間的結束日),或 DueDate.BegOfPeriod (若付款期限是付款期間的開始日)。如果省略,則假設為 DueDate.EndOfPeriod。

例外狀況

例外狀況類型

錯誤代碼

條件

ArgumentException

5

Rate <= -1.

ArgumentException

5

Rate = 0 和 Pmt = 0

如果將使用非結構化錯誤處理的 Visual Basic 6.0 應用程式升級,請參閱「錯誤代碼」資料行 (您可以將錯誤代碼與 Number 屬性 (Err 物件) 比對)。但是,請盡可能考慮以 Visual Basic 的結構化例外處理概觀取代這類錯誤控制項。

備註

年金是在約定期間內一連串的固定現金付款。年金可以是借貸 (例如房屋抵押貸款) 也可以是投資 (例如每月定存存單)。

凡是引數,現金支出 (例如存款) 都以負數來表示,現金收入 (例如股息支票) 則以正數來表示。

範例

這個範例會使用 NPer 函式,傳回貸款必須付完的付款期數,該項貸款的值包含在 PVal 中。前提也是提供每一期的利率 (APR / 12)、付款 (Payment)、貸款的未來值 (FVal) 和表示付款時間是在付款期間開頭或結尾的數字 (PayType)。

Sub TestNPer()
    Dim TotPmts As Double
    Dim PVal, APR, Payment As Double
    Dim PayType As DueDate
    Dim Response As MsgBoxResult

    ' Usually 0 for a loan.
    Dim Fval As Double = 0
    PVal = CDbl(InputBox("How much do you want to borrow?"))
    APR = CDbl(InputBox("What is the annual percentage rate of your loan?"))
    ' Usually 0 for a loan.
    If APR > 1 Then APR = APR / 100
    Payment = CDbl(InputBox("How much do you want to pay each month?"))
    Response = MsgBox("Do you make payments at the end of month?", MsgBoxStyle.YesNo)
    If Response = MsgBoxResult.No Then
        PayType = DueDate.BegOfPeriod
    Else
        PayType = DueDate.EndOfPeriod
    End If
    TotPmts = NPer(APR / 12, -Payment, PVal, FVal, PayType)
    If Int(TotPmts) <> TotPmts Then TotPmts = Int(TotPmts) + 1

    MsgBox("It will take you " & TotPmts & " months to pay off your loan.")
End Sub

需求

命名空間 (Namespace)︰Microsoft.VisualBasic

**模組︰**Financial

組件 (Assembly):Visual Basic Runtime Library (在 Microsoft.VisualBasic.dll 中)

請參閱

參考

財務摘要

ArgumentException