Анимация
JavaScript
|
Главная Библионтека ка..1иш.111лшчдтдд,11,1 Il iiiaiillaiBiidTTanr Q £айл Правка £ид Вставка Формат Сервис Ланные Дкно 2 - li? I х 2 Число выплат 6 3 Размер ссуды 10 000р. 4 Размер одной выплаты 2 000р. 5 Процентная ставка 7.00% 6 Текущий объем ссуды 9533.03 р. 7 Маргинальная процентная ставка 5.47% 8 Маргинальный чистый текущий объем ссуды 1 ООО 000р. h I 1 В I С D Е F - 11 12 13 14 15 16 \< А > ►! \ Лист!/ЛИСТ2/ЛистЗ/ Ч I Ч Г" Готово Рис. 17.3. Отчет, выводимый на рабочем листе программой расчета маргинальной процентной ставки Текст программы имеет следующий вид: Private Sub CommandButtonl Click() Процедура расчета маргинальной процентной ставки Dim i As Double Dim p As Double Dim A As Double Dim iMarg As Double Dim pPure As Double Dim n As Integer n - число выплат p - размер ссуды * a - размер одной выплаты i - процентная ставка pPure - текущий объем ссуды, на рабочем листе вычисляется функцией ПЗ iMarg - маргинальная процентная ставка * Проверка того, чтобы введенные в диалоговое окно данные являлись числами If IsNumeric(TextBoxl.Text) = False Then MsgBox "Ошибка в числе выплат", vblnformation, "Маргинальная ставка" TextBoxl.SetFocus Exit Sub End If If IsNumeric(TextBox2.Text) = False Then MsgBox "Ошибка в размере ссуды", vblnformation, "Маргинальная ставка" TextBox2.SetFocus Exit Sub End If If IsNumeric(UserForml.TextBoxS.Text) = False Then MsgBox "Ошибка в размере одной выплаты", vblnformation, "Маргинальная ставка" TextBoxS.SetFocus Exit Sub End If If IsNumeric(TextBox4.Text) = False Then MsgBox "Ошибка в процентной ставке", vblnformation, "Маргинальная ставка" TextBox2.SetFocus Exit Sub End If Ввод данных в переменные из диалогового окна п = CInt (TextBoxl.Text) р = CDbl(TextBox2.Text) A = CInt(TextBoxS.Text) i = CInt(TextBox4.Text) / 100 Проверка согласованности ввода данных If n * А < р Then MsgBox "Возвращается на" & cstr(Format(р - n * A, "Fixed")) & "меньше размера ссуды", VbExclamation, "Маргинальная ставка" TextBoxl.SetFocus Exit Sub End If Изменение ширины столбцов и задание режима ввода текста с переносом ActiveSheet.Columns("А:А").Select With Selection .ColuronWidth = 20 .WrapText = True End With ActiveSheet.Columns("B:B").Select Selection.ColumnWidth = 12 Выбор ячейки В2 для того, чтобы снять выделение со столбца В ActiveSheet.Range("В2").Select Ввод названий записей на рабочем листе With ActiveSheet .Range("А2").Value = "Число выплат" .Range("A3").Value = "Размер ссуды" .Range("А4").Value = "Размер одной выплаты" .Range("A5").Value = "Процентная ставка" .Range("Аб").Value = "Текущий объем ссуды" .Range("А7").Value = "Маргинальная процентная ставка" .Range("А8").Value = "Маргинальный чистый текущий объем ссуды" .Range{"В8").Activate End With • Расчет чистого текущего объема ссуды pPure = Application.PV(i, n, -A) • Нахождение маргинальной процентной ставки • с помощью команды "Подбор параметра". Ввод данных в ячейки активного рабочего листа • и задание процентного и денежного форматов в ячейках With ActiveSheet Range("В2").Value = n Range("ВЗ").NumberFormat = "#,##0$" Range("B3").Value = p Range("B4").NumberFormat = "#,##0$" Range("B4").Value = A Range("B5").NumberFormat = "0.00%" Range("B5").Value = i Range("B7").NuinberFonnat = "0.00%" Ввод начального приближения для маргинальной процентной ставки Range("В7").Value = i Ввод формулы расчета Range ("В8") .FormulaLocal =ПЗ(В7;В2;-В4)" Range("Вб").Value = .Range("В8").Value Выполнение команды "Подбор параметра" Range("В8").GoalSeek Goal:=р, ChangingCell:=.Range("В7") Присвоение найденного значения маргинальной процентной ставки переменной iMarg iMarg = .Range("В7").Value End With Переформатирование найденных значений и вывод их в диалоговом окне TextBoxS.Text = CStr(Format(pPure, "Fixed")) TextBox6.Text = CStr(Format(iMarg * 100, "Fixed")) End Sub Private Sub CommandButton2 Click() Процедура закрытия диалогового окна UserForml.Hide End Sub Private Sub UserForm.Initialize() 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [ 41 ] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |