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 年の車のローンを月払いで返済する場合、支払い回数は 48 回 (12 回×4 年) になります。

  • Pmt
    必ず指定します。毎回の支払額を示す倍精度浮動小数点数型 (Double) の値です。通常、支払額には元金と利息が含まれます。支払額を投資期間内に変更することはできません。

  • PV
    必ず指定します。現在の投資額、つまり将来行われる一連の支払いや収益を現時点で一括した場合の合計金額を示す倍精度浮動小数点数型 (Double) の値を指定します。たとえば、車を購入するために資金を借りる場合、現在価値は毎月支払うローンの総額になります。

  • FV
    省略できます。投資の将来価値、つまり最後の支払いを行った後に残る現金の収支を示す倍精度浮動小数点数型 (Double) の値を指定します。たとえば、ローンなどの借入の将来価値は 0 になります。また、子供の教育費用として 18 年間で 500,000 円貯蓄する場合は、将来価値が 500,000 円になります。このパラメータを省略すると、0 を指定したものと見なされます。

  • Due
    省略可能です。支払期日を示すオブジェクト型 DueDate 列挙型 の値を指定します。各期の期末に支払う場合は DueDate.EndOfPeriod を、各期の期首に支払う場合は DueDate.BegOfPeriod をそれぞれ引数に指定します。この引数を省略すると、DueDate.EndOfPeriod を指定したものと見なされます。

  • Guess
    省略できます。Rate によって返される値の推定値を倍精度浮動小数点数型 (Double) で指定します。省略すると、Guess に 0.1 (10%) を指定したものと見なされます。

例外

例外の種類

エラー番号

条件

ArgumentException

5

NPer <= 0.

非構造化エラー処理を使用する Visual Basic 6.0 アプリケーションをアップグレードする場合は、"エラー番号" の列を参照してください(エラー番号を Number プロパティ (Err オブジェクト) と比較することもできます)。ただし、可能であれば、このようなエラー制御は Visual Basic の構造化例外処理の概要 に置き換えることを検討してください。

解説

投資とは、一連の定額の支払いを一定の期間行うことです。たとえば、住宅ローンなどのローンまたは毎月の貯蓄プランなどの出資を指します。

出金 (定額預金の支払いなど) を表す引数には負の値を指定し、入金 (配当金など) を表す引数には正の値を指定します。

Rate 関数は、反復計算の手法を用いて利率を計算します。引数 Guess、Rate の値を初期値とし、計算結果の誤差が 0.00001% 以内になるまで反復計算を行います。Rate が反復計算を 20 回行っても適切な解が見つからない場合は、エラーとなります。推定値に 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

必要条件

名前空間 : Microsoft.VisualBasic

モジュール : Financial

アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)

参照

参照

財務処理の概要

ArgumentException