На этом шаге мы закончим изучение этого вопроса.
Ввод в список выбранного кода управленческого учета и наименования статьи расшифровки кода осуществляется с помощью кнопки Ввод. Этой кнопке назначен макрос ВводФиксированногоПлатежа (рисунок 1).
Рис.1. Подпрограмма ВводФиксированногоПлатежа
Задачей подпрограммы ВводФиксированногоПлатежа является:
Перед записью макроса введите в ячейку D11 формулу:
=ВПР($AA$1;Пульт!$W$4:$Y$50;СТОЛБЕЦ(B11);ЛОЖЬ)
Строка кода VBA Rows(Row).Copy означает: скопировать строку, номер которой присвоен переменной Row.
В нашем примере ввод даты и суммы фиксированного платежа производится вручную с клавиатуры, но при желании и этот процесс можно автоматизировать. Проверка правильности вводимых дат осуществляется с помощью кнопки Проверка введенных дат, которой назначен макрос ПроверкаВведенныхДат (рисунок 2).
Рис.2. Подпрограмма ПроверкаВведенныхДат
Задачей макроса является проверка: введены ли даты в области С11:С510 при вводе кодов управленческого учета в области D11:D510, а если введены, то соответствуют ли они датам рабочих дней в диапазоне ячеек V10:V40 на рабочем листе Прогноз (рисунок 3).
Рис.3. Область расчета временного отрезка на рабочем листе Прогноз
При обнаружении ошибки макрос формирует в ячейке С7 текст: ОШИБКА ВВОДА ДАТ!. На рисунке 4 показан пример неправильного ввода дат.
Рис.4. Фрагмент рабочего листа ФиксПотоки с обнаруженными ошибками ввода дат
Перед записью макроса ПроверкаВведенныхДат введите формулу в ячейку В11:
=ЕСЛИ(D11=0;0;ЕСЛИ(ВПР(C11;Прогноз!$V$10:$V$40;1;ЛОЖЬ)=C11;0))
В ячейке С7 формула суммирует диапазон B11:B510. При обнаружении ошибки функция ЕНД возвращает значение ИСТИНА, и тогда функция ЕСЛИ возвращает текст, что обнаружена ошибка:
=ЕСЛИ(ЕНД(СУММ(B11:B510));"ОШИБКА ВВОДА ДАТ!";0)
Для удаления последней введенной записи в список фиксированных платежей, создайте кнопку Очистка последней строки, которой назначьте макрос УдалениеПоследнейСтроки (рисунок 5).
Рис.5. Подпрограмма УдалениеПоследнейСтроки
Этот макрос легко создается копированием текста кода VBA подпрограммы ВводФиксированногоПлатежа (рисунок 1) в Редакторе Visual Basic и незначительным последующим редактированием. Подпрограмма определяет номер строки последней заполненной ячейки в столбце D, выделяет эту строку и очищает содержимое.
На следующем шаге мы рассмотрим распределенные платежи.