Share via


Rate 函式

更新:2007 年 11 月

傳回 Double,指定年金每期的利率。

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

參數

  • NPer
    這是必要項。Double 指定年金保險投資中付款的總期數。例如,如果您的四年期汽車貸款是採月付方式償還,則付款總期數就是 4 * 12 (即 48) 期。

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

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

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

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

  • Guess
    選擇項。Double 指定您預估的值是由 Rate 傳回。如果省略,Guess 為 0.1 (即 10%)。

例外狀況

例外狀況類型

錯誤代碼

條件

ArgumentException

5

NPer <= 0.

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

備註

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

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

Rate 是以迭代法計算的。以 Guess 值為起始值,Rate 不斷循環計算,直到計算結果的精確度在 0.00001% 以內。如果 Rate 在嚐試 20 次的計算後仍沒有結果,便宣告失敗。如果您的 Guess 為 10%,而且 Rate 失敗,則嘗試其他的 Guess 值。

範例

這個範例會使用 Rate 函式來計算貸款的利率,前提是要提供付款總數 (TotPmts)、貸款付款金額 (Payment)、貸款的現值或本金 (PVal)、貸款的未來值 (FVal)、表示付款時間是在付款期間開頭或結尾的數字 (PayType),以及預期利率的大約值 (Guess)。

Sub TestRate()
    Dim PVal, Payment, TotPmts, APR As Double
    Dim PayType As DueDate

    ' Define percentage format.
    Dim Fmt As String = "##0.00"
    Dim Response As MsgBoxResult
    ' Usually 0 for a loan.
    Dim FVal As Double = 0
    ' Guess of 10 percent.
    Dim Guess As Double = 0.1
    PVal = CDbl(InputBox("How much did you borrow?"))
    Payment = CDbl(InputBox("What's your monthly payment?"))
    TotPmts = CDbl(InputBox("How many monthly payments do you have to make?"))
    Response = MsgBox("Do you make payments at the end of the month?", MsgBoxStyle.YesNo)
    If Response = MsgBoxResult.No Then
        PayType = DueDate.BegOfPeriod
    Else
        PayType = DueDate.EndOfPeriod
    End If
    APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100

    MsgBox("Your interest rate is " & Format(CInt(APR), Fmt) & " percent.")
End Sub

需求

命名空間 (Namespace)︰Microsoft.VisualBasic

**模組︰**Financial

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

請參閱

參考

財務摘要

ArgumentException