Функция 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.
Исключения
Тип исключения |
Номер ошибки |
Условие |
---|---|---|
Значение параметра 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)