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%)。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
NPer <= 0. |
如果正在升级使用无结构错误处理的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述替换这种错误控制。
备注
年金是一笔定期支付的固定数量现金。年金可以是一笔贷款(如住房抵押)或一笔投资(如按月储蓄计划)。
对于所有参数,支付的现金(如存款)用负数表示;收到的现金(如股息支票)用正数表示。
Rate 以迭代方式进行计算。先从 Guess 的值开始,Rate 反复循环进行计算,直到结果的精确度达到 0.00001%。如果经过 20 次尝试还不能得到结果,则 Rate 计算失败。如果您的预计值为 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
要求
**模块:**Financial
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)