次の方法で共有


DDB 関数

倍額定率法や、ユーザーが指定した他の方法を使用して、特定の期における資産の減価償却費を指定する Double を返します。

構文

DDB(cost, salvage, life, period, [ factor ])

DDB 関数には、次の名前付き引数があります。

指定項目 説明
cost 必須。 資産の初期コストを指定する Double です。
salvage 必須。 耐用期間が終了した時点での資産の価格を指定する Double です。
life 必須。 資産の耐用期間を指定する Double です。
period 必須。 資産の減価償却費を計算する期を指定する Double です。
factor 省略可能。 減価償却率を指定する Variant です。 省略すると、2 (倍額定率法) を指定したと見なされます。

解説

倍額定率法では、減価償却費が加速的に計算されます。 減価償却費は、最初の期が最も多く、その後の期では急速に減少します。

有効期間期間の引数は、同じ単位で表す必要があります。 たとえば、 life を月数で指定した場合は、 period も月数で指定する必要があります。 すべての引数は、必ず正の数で指定してください。

DDB 関数では、次の数式を使用して、指定した期の減価償却費を計算します。

価償却費/period = ((cost - salvage) * factor) / life

この例では、DDB 関数を使用して、指定した期における資産の減価償却費を返します。指定する項目は、初期コスト (InitCost)、資産の耐用期間が終了した時点での残存価額 (SalvageVal)、資産の耐用年数 (LifeTime)、および減価償却費を計算する年単位の期 (Depr) です。

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr
Const YRMOS = 12    ' Number of months in a year.
Fmt = "###,##0.00"
InitCost = InputBox("What's the initial cost of the asset?")
SalvageVal = InputBox("Enter the asset's value at end of its life.")
MonthLife = InputBox("What's the asset's useful life in months?")
Do While MonthLife < YRMOS    ' Ensure period is >= 1 year.
    MsgBox "Asset life must be a year or more."
    MonthLife = InputBox("What's the asset's useful life in months?")
Loop
LifeTime = MonthLife / YRMOS    ' Convert months to years.
If LifeTime <> Int(MonthLife / YRMOS) Then
    LifeTime = Int(LifeTime + 1)    ' Round up to nearest year.
End If 
DepYear = CInt(InputBox("Enter year for depreciation calculation."))
Do While DepYear < 1 Or DepYear > LifeTime
    MsgBox "You must enter at least 1 but not more than " & LifeTime
    DepYear = InputBox("Enter year for depreciation calculation.")
Loop
Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)
MsgBox "The depreciation for year " & DepYear & " is " & _
Format(Depr, Fmt) & "."

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。