В разрабатываемом в данном уроке приложении решается задача нахождения размера постоянных платежей по выданной в долг сумме на фиксированный срок под фиксированные проценты. Приложение рассчитывает размер выплат для различных процентных ставок, изменяющихся от начальной до конечной величины с указанным шагом. Кроме того, приложение строит диаграмму, показывающую зависимость величины выплат от процентной ставки.
Конструируя данное приложение, вы на практике освоите, как:
Производить расчет периодических выплат
Использовать финансовую функцию ППЛАТ ( РМТ )
Выводить результаты табулирования функции в элемент управления ListBox (СПИСОК)
Строить диаграмму, тип которой выбирается в группе переключателей
Отображать графический файл в элементе управления image (рисунок)
Осуществлять проверку наличия файла на диске
Теория
Функция ППЛАТ (РМТ) вычисляет величину постоянной периодической выплаты ренты (например, регулярных платежей по займу) при постоянной процентной ставке.
Синтаксис:
ППЛАТ(ставка; кпер; нз; бз; тип)
Аргументы:
ставка
Процентная ставка за период
кпер
Общее число периодов выплат
нз
Текущее значение, т. е. общая сумма, которую составят будущие платежи
бз
Будущая стоимость или баланс наличности, который нужно достичь после последней выплаты. Если аргумент бз опущен, то по умолчанию полагается равным 0 (будущая стоимость займа, например, равна 0)
тип
Допустимые значения: 0 или 1, обозначающие, когда должна производиться выплата. Если аргумент- тип равен 0 или опущен, то оплата в конце периода, если равен 1 , то в начале периода
Практика
В данном приложении решается задача нахождения размера постоянных платежей по выданной в долг сумме на фиксированный срок под фиксированные проценты. Приложение рассчитывает размер выплат для различных процентных ставок, изменяющихся от начальной до конечной с указанным шагом.
Рис. У9.1. Диалоговое окно Периодических выплат
Кроме того, приложение строит диаграмму, показывающую зависимость величины выплат от процентной ставки. Тип диаграммы можно задать, выбирая переключатель из группы диаграмма диалогового окна Периодических выплат (рис. У9.1). Результат табуляции зависимости размера выплат от процентной ставки выводится в элемент управления ListBox диалогового окна и на рабочий лист (рис. У9.2).
Рис. У9.2. Отчет, создаваемый приложением на рабочем листе
Обсудим, как приведенная ниже программа решает описанную задачу и что в ней происходит.
UserForm Initialize
Активизирует диалоговое окно.
Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> — вычислить, а также задает тексты всплывающих подсказок для этих кнопок и кнопки Очистка.
Устанавливает изначально переключатель гистограмма. Проверяет наличие на диске файла, отображаемого в элементе управления image при данном выборе переключателя. Если такого файла нет, то информирует об этом пользователя, но тем не менее программа продолжает свою работу без загрузки отсутствующего файла. Если файл есть, изображение, содержащееся в этом файле, выводится в элементе управления image.
Нажатие кнопки Вычислить запускает на выполнение процедуру
CommandButtonl_Click
Проверяет, являются ли вводимые данные числами. В случае ошибки отображает соответствующее сообщение.
Проверяет согласованность вводимых данных. В случае ошибки отображает соответствующее сообщение (рис. У9.3).
Вводит на рабочий лист заголовки записей и их форматирует.
Определяет число точек, в которых будут табулироваться процентные ставки.
Последовательно находит размеры выплат для очередной процентной ставки, меняющейся от начального значения до конечного с указанным шагом. Результаты вычислений выводит на рабочем листе и в двумерный массив ЭлементыСписка, число строк которого равно числу процентных ставок. В первый его столбец выводятся процентные ставки, а во второй -величины соответствующих выплат.
На основе массива ЭлементыСписка заполняется список, предварительно очищенный от ранее введенных в него элементов.
В соответствии с установленным переключателем из группы диаграмма при помощи процедуры график строится выбранная диаграмма.
Рис. У9.3. Пример сообщения о несогласованности данных
OptionButton1_Click, OptionButton2_Click
и
OptionButton3_Click
Выбирает переключатель гистограмма, график или Круговая группы Диаграмма. Проверяет наличие на диске файла, отображаемого в элементе управления image при данном выборе переключателя. Если такого файла нет, то информирует об этом пользователя, и программа продолжает свою работу без загрузки отсутствующего файла. Если файл имеется, то изображение, содержащееся в этом файле, выводится в элементе управления Image .
График
Удаляет с рабочего листа все ранее построенные диаграммы. Строит диаграмму на рабочем листе. Аргументами процедуры являются ТипГрафика и его Формат.
При разработке данного приложения может возникнуть только одно затруднение: Откуда взять подходящие картинки, отображаемые в группе диаграмма диалогового окна Периодических выплат?
Но, к счастью, это только кажущаяся, можно сказать виртуальная, загвоздка. Эти картинки присутствуют в диалоговом окне первого шага мастера диаграмм. Таким образом, задача сводится к простому экстрагированию их оттуда. Для этого достаточно:
Выбрать команду Вставка, Диаграмма (Insert, Chart).
В появившемся диалоговом окне первого шага мастера диаграмм при помощи списков Тип (Chart type) и Вид (Chart sub-type) отобразить требуемый рисунок диаграммы.
Нажать клавишу <Print Screen>, тем самым копируя содержимое экрана в буфер обмена.
Вызвать какой-нибудь графический редактор. Лучше всего тот, к которому вы привыкли и имеете опыт работы с ним. Если у вас нет никаких особых привязаностей к конкретному графическому редактору, вызовите, например, редактор Paint, который входит в стандартный комплект программ, поставляемых с Windows. Он, конечно, слабоват и обладает не ахти какими возможностями, но их с лихвой хватает для решаемой нами задачи. Для вызова редактора Paint выберите в Windows команду Пуск, Программы, Стандартные, Графический редактор Paint (Start, Programs, Accessories, Paint).
Появится окно редактора Paint. Нажмите комбинацию клавиш <Ctrl>+<V>, что приведет к вставке в редактор Paint графического образа экрана, скопированного ранее в буфер обмена.
Нас интересует картинка не всего экрана, а только часть, где изображен выбранный нами тип диаграммы. Этот тип надо выделить - нажмите кнопку Выделение (Selection), а потом при нажатой правой кнопке мыши выделите требуемый фрагмент.
Нажмите комбинацию клавиш <Ctrl>+<C>. Выделенный фрагмент будет записан в буфер обмена.
Выберите команду Файл, Создать (File, New). Так как, скорее всего, графическая копия всего экрана нам больше не потребуется, в появившемся диалоговом окне редактора Paint с информационном сообщением о том, надо ли сохранять файл, нажмите кнопку Нет (No).
Появится пустое окно редактора Paint. Нажмите комбинацию клавиш <Ctrl>+<V>, что приведет к вставке в редактор Paint графического образа вырезанного фрагмента экрана, скопированного ранее в буфер обмена.
Используя команду Рисунок, Атрибуты (Image, Attributes) или маркеры изменения размера рисунка, можно подобрать размеры рисунка так, чтобы они совпадали со вставленным в редактор фрагментом экрана.
Выберите команду Файл, Сохранить как (File, Save as) для того, чтобы сохранить созданный графический файл на диске.
Самостоятельное задание
Построить приложение с диалоговым окном диаграмма (рис. У9.4). В этом приложении протабулировать следующие функции на заданном интервале с заданным шагом:
F(x) = х2Sin(л х)
G(x) = Sin2(л x) Cos(л x)
T(x) = (Sin(л x)+Cos(л x)) /(1 + Sin2(л x))
U(x) = Sin3(л x)Cos(л x)(1 + Sin2(л x))
Рис. У9.4. Диалоговое окно Диаграмма
При этом должны табулироваться не все функции, а только выбранные в списке выбираемые функции. Для отображения списка с флажками, которые позволят более наглядно выбирать несколько элементов из списка, воспользуйтесь свойством списка Liststyle. Результат табуляции следует вывести в список Аргумент и значения функций. Для того чтобы все табулируемые значения поместились в этот список по ширине, воспользуйтесь свойством ColumnWidths, которое устанавливает ширину каждой колонки списка. По результату табуляции программа должна построить диаграмму, выбранную из группы Диаграмма.