Периодични плащания

Приложението, разработено в този урок, решава проблема с намирането на размера на постоянните плащания за дадена сума на заем за определен период при фиксиран процент. Приложението изчислява размера на плащанията за различни лихвени проценти, вариращи от първоначалната до крайната стойност в зададената стъпка. Освен това приложението изгражда диаграма, показваща зависимостта на размера на плащанията от лихвения процент.

  • Като проектирате това приложение, на практика ще научите как да:
  • Изчисляване на периодични плащания
  • Използвайте финансова функция PMT ( PMT )
  • Покажете резултатите от табличното представяне на функцията в контролния ListBox (СПИСЪК)
  • Изградете диаграма, чийто тип се избира в групата радио бутони
  • Показване на графичен файл в контрола на изображението (картина)
  • Проверете дали файлът съществува на диск

Функцията PMT (PMT) изчислява сумата на постоянно периодично анюитетно плащане (например редовни плащания по заем) при постоянен лихвен процент.

PPLAT(ставка; nper; nz; bz; тип)

Лихвен процент за период

Общ брой периоди на плащане

Текуща стойност, т.е. общата сума, която бъдещите плащания ще възлизат на

Бъдещата стойност или паричен баланс, който трябва да бъде постигнат след последното плащане. Ако аргументът bz е пропуснат, тогава стойността по подразбиране е 0 (бъдещата стойност на заема, например, е 0)

Валидни стойности: 0 или 1, показващи кога трябва да се извърши изплащането. Ако аргументът тип е равен на 0 или е пропуснат, плащането е в края на периода, ако е равен на 1, тогава в началото на периода

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

периодични

Ориз. U9.1. Диалогов прозорец за периодично плащане

Освен това приложението изгражда диаграма, показваща зависимостта на размера на плащанията от лихвения процент. Типът на диаграмата може да бъде зададен чрез избиране на радиобутона от групата Графика на диалоговия прозорец Повтарящи се плащания (фиг. Y9.1). Резултатът от таблицата на зависимостта на размера на плащанията от лихвения процент се показва в контролата ListBox на диалоговия прозорец и на работния лист (фиг. U9.2).

периодични

Ориз. U9.2. Отчет, генериран от приложението на работен лист

Нека обсъдим как програмата по-долу решава описания проблем и какво се случва в нея.

Натискането на бутона Изчисли стартира процедурата

Ориз. Y9.3. Пример за съобщение за несъответствие на данните

Избира бутона за избор Хистограма, Графика или Кръгова диаграма. Проверява дали файлът, който се показва в контролата на изображението, когато е избран радиобутонът, е на диск. Ако няма такъв файл, тя информира потребителя за това и програмата продължава работата си, без да зарежда липсващия файл. Ако файлът съществува, тогава изображението, съдържащо се в този файл, се показва в контролата за изображение.

Премахва всички предварително изградени диаграми от работния лист. Изгражда диаграма върху работен лист. Аргументите на процедурата са ChartType и неговият формат.

Private Sub CommandButtonl_Click()

Процедура за изчисляване на плащането по кредит

Dim p Като двойно

Dim i_npc като двойно

Dim i kps като двойно

Dim i_ball като двойно

Dim k като цяло число

Dim i като цяло число

Dim n като цяло число

Dim m като цяло число

Dim Interest() като двойно

Dim PercentFormat() като вариант

DimListElements() като вариант

Dim Area като обект

' i_nps - начален лихвен процент

' i_кnc - краен лихвен процент

' i_inar - увеличение на лихвения процент

' k - брой плащания

'A() - динамичен масив от стойности на изплащане

' Interest() - динамичен масив от стойности на лихвения процент

' InterestFormat() - динамичен масив от стойности на лихвения процент,

' процентно форматиран

' ItemsList() - динамичен масив, състоящ се от две колони:

' стойности на лихвени проценти и плащания, показани в списъка

' Проверете дали в полетата на диалоговия прозорец са въведени числа

If IsNumeric(TextBoxl.Text) = False Тогава

MsgBox "Грешка при заема", vbInformation, "Плащания" TextBox1.SetFocus

If IsNumeric(TextBox2.Text) = False Тогава

MsgBox „Грешка в номера на изплащане“, vblnformation, „Плащания“

If IsNumeric(TextBox3.Text) = False Тогава

MsgBox „Грешка при първоначалния лихвен процент“, vblnformation, „Изплащания“

If IsNumeric(TextBox4.Text) = False Тогава

MsgBox "Грешка в окончателния лихвен процент", vblnformation, "Плащания"

If IsNumeric(TextBoxS.Text) = False Тогава

MsgBox "Грешка в стъпката на лихвения процент", vblnformation, "Плащания"

' Присвояване на променливи на стойностите, въведени в диалоговия прозорец

i_nps = CDbl(TextBox3.Text) / 100

i_Knc = CDbl(TextBox4.Text) / 100

i_ball =CDbl(Текстово поле5.Текст) / 100

' Проверка на последователността на въведените лихвени проценти.

' В съобщението се показва несъответствие при въвеждане

MsgBox "Крайният лихвен процент е по-малък от първоначалния",

vbExclamation, "Диаграма" TextBox3.SetFocus

Изход Sub End If If i_kps

MsgBox "Стъпка твърде голяма!" & Chr(13) &

„Само една стойност е таблична.“, vbExclamation, „Диаграма“ TextBox5.SetFocus

MsgBox "Стъпката трябва да е положителна!",

vbExclamation, "Диаграма" TextBox5.SetFocus

' Изчистване на работния лист от резултатите от предишни изчисления '

'm - брой лихвени проценти

m = (i_kps - i_nps) / i_стъпка + 1

' Задайте граници на динамични масиви Проценти,

' PercentFormat и A

ReDim Interest(1 След това m)

ReDim InterestFormat (1 Том)

' Въведете заглавията на записите в работен лист

.Range("Al").Value = "Лихвен процент"

.Range("A2").Value = "Сума на изплащане"

.Range("A4").Value = "Брой плащания"

' Форматиране на заглавия на публикации

ActiveSheet. Обхват ("Al:A4")

.Избиране с селекция

' Извеждане на данни в работен лист

Percent(i) = i_nps + i_char * (i - 1) A(i) = Application.Pmt(Percent(i), k, -p) A(i) = Format(A(i), "##")

PercentageFormat(i) = Формат(Процент) , "#.0%")

.Cells(1, i + 1>.Value = PercentageFormat(i)

.Cells(2, i + 1).Стойност = A(i)

' Задайте границите на динамичния arrayListItems

' Използва се за показване на стойностите на лихвения процент

' и стойностите на съответните плащания в списъка

ReDim List Items (i To m, 0 To 1)

' Поелементна дефиниция на масив Елементи от списък

ListItems(i, 0) = PercentageFormat(i)

Елементи от списък (i, 1) = A (i)

' Попълнете списък с две колони с данни

С ListBoxl .Clear

' Премахнете всички графични обекти от активния работен лист

' Дефинирайте избрания радио бутон,

', указвайки типа на диаграмата и

' изградете избраната диаграма

If OptionButtonl.Value = True Then Graph xlColumn, 6

If OptionButton2.Value = True Then Chart xlLine, 10

If OptionButton3.Value = True Then Chart xlPie, 7

Sub Graph (GraphType като цяло число, формат като цяло число)

' Процедура за чертане

' ChartType - определя типа на диаграмата на втората стъпка на Chart Wizard

' Формат - определя вида на диаграмата в третата стъпка на съветника за диаграми

Затъмнете зоната като обект

Dim n като цяло число

' Обектна променлива Област - диапазонът, върху който е изградена диаграмата

Задайте област = ActiveSheet.Cells(1, 2).CurrentRegion

' n е броят на колоните в диапазона на площта

' (195, 30, 200, 190) - координати на зоната, където е построена диаграмата

ActiveSheet.ChartObjects.Add(195, 30, 200, 190). Изберете

Диапазон (Клетки (1, 2), Клетки (2, n)),

Private Sub CommandButton2_Click()

' Процедура за затваряне на диалоговия прозорец

UserForml.Hide End Sub

Private Sub CommandButton3_Click()

' Процедура за изчистване на работния лист

' Изчистване на клетки от работен лист

Private Sub OptionButtonl_Click()

' Процедурата за зареждане на файл в контролата Image

', когато изберете бутона за избор Хистограма

' Ако няма файл с картина, се показва съобщение

Ако Err.Number = 52, тогава

MsgBox"Няма графичен файл VBA3_F1.BMP." & Chr'(13) &

„Работим без картина“, vbCritical, „Изплащания“

Частна подопцияButton2_Click()

' Процедура за зареждане на .file в контрола Image

', когато избирате бутона за избор Graph

При грешка GoTo Message2

' Ако няма файл с картина, се показва съобщение

Ако Err.Number = 52, тогава

MsgBox "Няма графичен файл VBA3_F2.BMP." & Chr(13) &

„Работим без картина“, vbCritical, „Изплащания“

Private Sub OptionButton3_Click()

' Процедурата за зареждане на файл в контрола за изображение

' при избиране на радиобутона Circular

При грешка GoTo Message3

' Ако няма файл с модел, се показва съобщението

Ако Err.Number = 52, тогава

MsgBox "Няма графичен файл VBA3_F3.BMP." & Chr(13) &

„Работим без картина“, vbCritical, „Изплащания“

Private Sub UserForm_Initialize()

' Процедурата за инициализиране и активиране на диалоговия прозорец

' Хистограма за избор на първоначален радиобутон

' Задайте функцията на бутона Изчисли на клавиша

.ControlTipText = "Изчисляване и отчитане на работен лист"

.ControlTipText = "Бутон за отказ"

.ControlTipText = "Изчистване на работен лист"

' Задайте същия цвят на рамката на контролата за изображение,

' Заредете картината, съответстваща на превключвателя Хистограма

' Ако няма файл с картина, се показва съобщение

Ако Err.Number = 52, тогава

MsgBox "Няма графичен файл VBA3_F1.BMP." & Chr(13) &

„Работим без картина“, vbCritical, „Изплащания“

По време на разработването на това приложение,Има само една трудност: Къде мога да получа подходящите снимки, показани в групата Диаграми на диалоговия прозорец Периодични плащания?

Но, за щастие, това е само привидна, може да се каже виртуална, пречка. Тези снимки присъстват в диалоговия прозорец на първата стъпка на съветника за диаграми. Така задачата се свежда до простото им извличане от там. За това е достатъчно:

  1. Изберете командата Вмъкване, Диаграма (Вмъкване, Диаграма).
  2. В появилия се диалогов прозорец на първата стъпка от съветника за диаграми използвайте списъците Тип (тип диаграма) и изглед (подтип на диаграма), за да покажете необходимото изображение на диаграмата.
  3. Натиснете клавиш

Създайте приложение с диаграма на диалогов прозорец (фиг. U9.4). В това приложение таблицирайте следните функции на даден интервал с дадена стъпка:

F(x) = x 2 Sin(l x)

G(x) = Sin 2 (l x) Cos(l x)

T(x) = (Sin(l x)+Cos(l x)) / (1+ Sin 2 (l x))

U(x) = Sin 3 (l x)Cos(l x)(1 + Sin 2 (l x))

прозорец

Ориз. U9.4. Диалогова диаграма

В този случай не всички функции трябва да бъдат таблични, а само избраните в списъка с избираеми функции. За да покажете списък с квадратчета за отметка, които ви позволяват по-визуално да изберете няколко елемента от списъка, използвайте свойството Liststyle на списъка. Резултатът от табулирането трябва да се покаже в списъка Аргументи и стойности на функциите. За да могат всички таблични стойности да се поберат в този списък по ширина, използвайте свойството ColumnWidths, което задава ширината на всяка колона от списъка. Въз основа на резултата от табулирането, програмата трябва да изгради диаграма, избрана от групата Diagram.