- •21 Платежный календарь стр. 23 Глава 21. Модель прогнозирования денежных потоков. Создание платежного календаря
- •Пример классического платежного календаря
- •Задачи автоматизации формирования платежного календаря
- •Создание платежного календаря
- •Формирование наименований статей платежного календаря
- •Заполнение платежного календаря суммами ежедневных оборотов денежных средств
- •Ввод дат и сальдо на начало дня
- •Полный цикл расчета денежных потоков
- •Создание диалогового окна с помощью функции MsgBox
- •Итоговые расчеты платежного календаря
- •Полный цикл заполнения платежного календаря
- •Сворачиванием окна Excel на все время выполнения вычислений
Итоговые расчеты платежного календаря
Подпрограмма КалендарьИтоговыеРасчеты (рис. 21.8.) довольно проста и заключается во вводе всех суммирующих формул в соответствующие диапазоны ячеек. В заключение подпрограмма выделяет весь рабочий лист и заменяет формулы на значения, после чего вводит в ячейку С1 формулу определения текущей даты и времени.
Рис. 21.8. Подпрограмма КалендарьИтоговыеРасчеты
Полный цикл заполнения платежного календаря
Для того чтобы все операции по заполнению платежного календаря происходили автоматически, напишите подпрограмму ЗаполнениеПлатежногоКалендаря (рис. 21.9.). Эта подпрограмма состоит из имен записанных ранее макросов, выполняющих заданные им процедуры расчетов. Для запуска макроса на выполнение создайте кнопку Заполнение платежного календаря (рис. 21.2.) и назначьте ей созданную подпрограмму.
Рис. 21.9. Подпрограмма ЗаполнениеПлатежногоКалендаря
Полный цикл расчета денежных потоков
Для полного расчета всей модели от перерасчета данных на листе ИсхДанные до расчета кредитной линии и заполнения платежного календаря запишите подпрограмму ПолныйРасчетДенежныхПотоков (рис. 21.10.), которая осуществляет весь цикл расчетов, описанный в главах создания модели ДенежныеПотоки. Запуск подпрограммы на выполнение поручите кнопке Полный расчет денежных потоков (рис. 21.2.).
Рис. 21.10. Подпрограмма ПолныйРасчетДенежныхПотоков полного расчета модели денежных потоков
Подпрограмма перепоручает созданным ранее процедурам УточненныйРасчетКредитнойЛинии (рис. 20.12.) и ЗаполнениеПлатежногоКалендаря (рис. 21.9.) выполнение всего цикла вычислений с момента перерасчета таблицы на листе ИсхДанные до заполнения платежного календаря. Кроме этого подпрограмма дополнена сервисными функциями:
таймером, фиксирующем время выполнения всего цикла расчета;
диалоговым окном, всплывающем при окончании вычислений;
сворачиванием окна Excel на все время выполнения вычислений и последующем восстановлении его на весь экран по завершению выполнения подпрограммы.
Таймер
Скорость выполнения вычислений всей модели зависит от мощности компьютера и может колебаться от десятков секунд до нескольких минут. В нашей подпрограмме внедрение таймера носит больше обучающий характер.
Работа таймера основана на функции Timer, которая возвращает значение, представляющее число секунд, прошедших после полуночи. Вначале выполнения подпрограммы переменной Х присваивается значение функции Timer в момент нажатия на кнопку, запускающую выполнение вычислений. После выполнения подпрограммы переменной Х присваивается разность между текущим значением функции Timer и зафиксированном ранее значением переменной Х. Полученное значение округляется с помощью функции Round:
X = Application.Round((Timer — X), 0)
, иначе в диалоговом окне показывающим окончание цикла вычислений после целого значения секунд будет присутствовать несколько десятичных знаков.
Создание диалогового окна с помощью функции MsgBox
О возможности создания в Excel пользовательских диалоговых окон с помощью Редактора Visual Basic было написано в главе 5 (рис. 5.16.). Рассмотрим создание и применение диалогового окна с помощью функции MsgBox. Функция MsgBox выводит на экран диалоговое окно, содержащее сообщение и устанавливает режим ожидания нажатия кнопки пользователем.
Синтаксис функции:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
содержит следующие основные именованные аргументы:
prompt — обязательный аргумент. Это строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов и зависит от ширины используемых символов.
buttons — необязательный аргумент. Это числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Для получения справки по этому аргументу поместите курсор на эту функцию и нажмите клавишу F1 для вызова справки Редактора Visual Basic. Значение этого аргумента по умолчанию равняется 0.
title — необязательный аргумент. Это строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения, например, Microsoft Excel.
В нашей подпрограмме в строке кода VBA:
MsgBox "Полная продолжительность расчета — " & X & " секунд(а/ы)", 0, "Модель прогнозирования движения денежных потоков"
у функции MsgBox имеются следующие аргументы:
prompt — отображаемое текстовое сообщение, содержащее текст — Полная продолжительность расчета, затем значение переменной — X и текст — секунд(а/ы);
buttons — присвоено значение 0, что говорит о том, что количество отображаемых кнопок одно — отображается только кнопка OK;
title — текстовое выражение, отображаемое в строке заголовка диалогового окна: Модель прогнозирования движения денежных потоков.
Рис. 21.11. Созданное диалоговое окно Модель прогнозирования движения денежных потоков для отображения времени расчета модели и показывающее окончание проведения расчетов
