Поделиться через


Функция PPmt

Обновлен: Ноябрь 2007

Возвращает значение Double, определяющее основной платеж за заданный период аннуитета, рассчитываемый на основе периодических фиксированных выплат и постоянной процентной ставки.

Function PPmt( _
   ByVal Rate As Double, _
   ByVal Per As Double, _
   ByVal NPer 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.

  • Per
    Обязательный. Double задает расчетный период в интервале от 1 до NPer.

  • NPer
    Обязательный параметр. Значение типа Double задает общее количество периодов платежей аннуитета. Например, при ежемесячных выплатах ссуды за автомобиль на протяжении 4 лет общее количество периодов выплат будет равно 4 * 12 (или 48).

  • PV
    Обязательный.Double задает текущее значение для серии будущих выплат или приходных накладных. Например, если для покупки автомобиля взят кредит, то эта сумма представляет собой текущее значение предстоящих ежемесячных платежей за автомобиль.

  • FV
    Необязательно. Double задает требуемую будущую сумму или баланс наличности после уплаты последнего платежа. Например, будущее значение ссуды равно 0 р., поскольку такова будет ее величина после последней выплаты. Однако если требуется собрать за 18 лет сумму в 1 500 000р. на образование детям, то будущая сумма будет равна 1 500 000 р. Если этот аргумент опущен, используется значение 0.

  • Due
    Необязательно. Объект типа Перечисление DueDate, задающий сроки выплат. Этот аргумент должен быть либо DueDate.EndOfPeriod, если выплаты должны производиться в конце периода, либо DueDate.BegOfPeriod в случае оплаты в начале периода. Если аргумент опущен, используется DueDate.EndOfPeriod.

Исключения

Тип исключения

Номер ошибки

Условие

ArgumentException

5

Значение параметра Per <= 0 или Per > NPer.

См. столбец "Номер ошибки", если выполняется обновление приложений Visual Basic 6.0, в которых используется неструктурированная обработка ошибок. (Можно сравнить номер ошибки с Свойство Number (объект Err).) Однако по возможности следует заменять такую систему управления ошибками на Обзор структурной обработки исключений в Visual Basic.

Заметки

Аннуитет представляет собой серию периодических фиксированных денежных выплат. Аннуитет может быть или платежом по ссуде (например, в случае ипотеки), или инвестицией (в случае ежемесячного планирования сбережений).

Аргументы Rate и NPer должны рассчитываться с использованием периодов платежей, выраженных в одинаковых единицах. Например, если Rate рассчитывается помесячно, то так же должен рассчитываться и NPer.

Для всех аргументов выплаченные суммы (например, сберегательные депозиты) обозначаются отрицательными числами, а полученные (например, чеки на дивиденды) — положительными.

Пример

В этом примере функция PPmt используется для расчета размера основного платежа за определенный период при условии, что суммы всех платежей одинаковы. Заданы: основная ставка за период (APR / 12), период платежа (Period), общее число платежей (TotPmts), текущая или основная величина суммы ссуды (PVal), будущее значение суммы ссуды (FVal) и число, указывающее, в начале или в конце периода будет производиться платеж (PayType).

Sub TestPPMT()
    Dim PVal, APR, TotPmts, Payment, Period, P, I As Double
    Dim PayType As DueDate
    Dim Msg As String
    Dim Response As MsgBoxResult

    ' Define money format.
    Dim Fmt As String = "###,###,##0.00"
    ' 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?"))
    ' Ensure proper form.
    If APR > 1 Then APR = APR / 100
    TotPmts = CDbl(InputBox("How many monthly payments do you have to make?"))
    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
    Payment = Math.Abs(-Pmt(APR / 12, TotPmts, PVal, FVal, PayType))
    Msg = "Your monthly payment is " & Format(Payment, Fmt) & ". "
    Msg = Msg & "Would you like a breakdown of your principal and "
    Msg = Msg & "interest per period?"
    ' See if chart is desired. 
    Response = MsgBox(Msg, MsgBoxStyle.YesNo)
    If Response <> MsgBoxResult.No Then
        If TotPmts > 12 Then MsgBox("Only first year will be shown.")
        Msg = "Month  Payment  Principal  Interest" & vbNewLine
        For Period = 1 To TotPmts
            ' Show only first 12.
            If Period > 12 Then Exit For
            P = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)
            ' Round principal.
            P = (Int((P + 0.005) * 100) / 100)
            I = Payment - P
            ' Round interest.
            I = (Int((I + 0.005) * 100) / 100)
            Msg = Msg & Period & vbTab & Format(Payment, Fmt)
            Msg = Msg & vbTab & Format(P, Fmt) & vbTab & Format(I, Fmt) & vbNewLine
        Next Period
        ' Display amortization table.
        MsgBox(Msg)
    End If
End Sub

Требования

Пространство имен:Microsoft.VisualBasic

**Модуль:**Financial

**Сборка:**Visual Basic (библиотека времени выполнения, в Microsoft.VisualBasic.dll)

См. также

Ссылки

Сводка по финансовым функциям

ArgumentException