Шаг 440.
VBA в MSExcel. Бюджетирование... . Фиксированные платежи. Автоматизация ввода данных по фиксированным платежам (окончание)

    На этом шаге мы закончим изучение этого вопроса.

Ввод кода и статьи управленческого учета

    Ввод в список выбранного кода управленческого учета и наименования статьи расшифровки кода осуществляется с помощью кнопки Ввод. Этой кнопке назначен макрос ВводФиксированногоПлатежа (рисунок 1).


Рис.1. Подпрограмма ВводФиксированногоПлатежа

    Задачей подпрограммы ВводФиксированногоПлатежа является:

    Перед записью макроса введите в ячейку D11 формулу:

  =ВПР($AA$1;Пульт!$W$4:$Y$50;СТОЛБЕЦ(B11);ЛОЖЬ)
и скопируйте ее в ячейку Е11. Формула аналогична предыдущей, введенной в ячейку F1, но в качестве третьего аргумента функции ВПР используется функция СТОЛБЕЦ. Вместо формул в ячейки D11 и Е11 можно ввести ссылки на ячейки F1 и F2. Результат будет тот же.

    Строка кода 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))
которая при наличии кода управленческого учета в ячейке D11, проверяет: есть ли такая дата в области V10:V40 рабочего листа Прогноз. Если дата отсутствует, то формула возвращает значение ошибки #Н/Д.

    В ячейке С7 формула суммирует диапазон B11:B510. При обнаружении ошибки функция ЕНД возвращает значение ИСТИНА, и тогда функция ЕСЛИ возвращает текст, что обнаружена ошибка:

  =ЕСЛИ(ЕНД(СУММ(B11:B510));"ОШИБКА ВВОДА ДАТ!";0)

Удаление последней записи

    Для удаления последней введенной записи в список фиксированных платежей, создайте кнопку Очистка последней строки, которой назначьте макрос УдалениеПоследнейСтроки (рисунок 5).


Рис.5. Подпрограмма УдалениеПоследнейСтроки

    Этот макрос легко создается копированием текста кода VBA подпрограммы ВводФиксированногоПлатежа (рисунок 1) в Редакторе Visual Basic и незначительным последующим редактированием. Подпрограмма определяет номер строки последней заполненной ячейки в столбце D, выделяет эту строку и очищает содержимое.

    На следующем шаге мы рассмотрим распределенные платежи.




Предыдущий шаг Содержание Следующий шаг