Шаг 238.
VBA в MSExcel. Автоматизация рабочего процесса по формированию и учету кассовых документов. Журнал регистрации кассовых ордеров

    На этом шаге мы приведем общие соображения по его формированию.

    На рабочем листе КассаЖурнал находится табличная база данных для одновременной регистрации приходных и расходных кассовых документов (рисунок 1). По горизонтали рабочая область всей таблицы - столбцы А:N, по вертикали - с 1-й до 200-ой строки.


Рис.1. Рабочий лист КассаЖурнал для регистрации приходных и расходных кассовых ордеров

    Рабочая область листа КассаЖурнал разделена на две части:

Область табличной базы данных журнала регистрации кассовых документов

    Область ввода в табличную базу данных можно условно разделить на четыре составляющих:

    Если введенные данные в две последние области могут относиться как к приходным, так и расходным ордерам, то ввод данных в одной строке по первым двум областям должен быть взаимоисключен. То есть в одной строке в этих областях не могут быть одновременно введены данные по формированию приходного и расходного ордера.

Присвоение порядкового номера

    Первый элемент автоматизации журнала регистрации - возможность раздельного присвоения ордерам порядкового номера. В прошлом примере номер просто увеличивался на единицу, учитывая максимальное значение номеров предыдущих строк. В этом же приложении надо учитывать, что в таблице две несмежных области ввода номеров. При этом определение номера в каждой из них должно производиться независимо от другой области. Следовательно, перед созданием алгоритма вычислений в формуле определения порядкового номера нужно задать некоторые условия, которым этот алгоритм должен удовлетворять.

    Формирование порядкового номера ордеров должно выполняться, учитывая следующую последовательность:

    Для выполнения всех этих условий создайте довольно простую формулу с использованием функций ЕСЛИ, ЕПУСТО и МАКС. В ячейке Е15, которая формирует порядковый номер расходных кассовых ордеров, формула:

  =ЕСЛИ(ЕПУСТО(B15);ЕСЛИ(ЕПУСТО(F15);0;МАКС(E$11:E14)+1);0)

    Функция ЕПУСТО в первом аргументе первой функции ЕСЛИ проверяет наличие даты в ячейке В15, которая относится к области ввода дат приходных кассовых ордеров. И если ячейка В15 заполнена, то тогда функция ЕСЛИ возвращает значение 0. Если ячейка В15 пуста, то формула переходит к решению второго аргумента первой функции ЕСЛИ.

    Следующая функция ЕПУСТО в первом аргументе второй функции ЕСЛИ проверяет наличие какого-либо значения введенного в ячейку F15 (дата формирования расходного кассового ордера) и если дата отсутствует, то второй аргумент функции ЕСЛИ возвращает значение 0. Если же дата присутствует (или любое другое значение), то функция МАКС в третьем аргументе второй функции ЕСЛИ ищет максимальное значение порядкового номера в ячейках столбца Е расположенных выше и к этому значению добавляет единицу.

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

    Или возможен другой случай - в одной строке могут находиться и заполненные области по приходному и по расходному ордеру, что может внести неоднозначное трактование записи на рабочих листах формирующих бланки приходных и расходных ордеров.

    При возможных нарушениях по вводу данных в строки журнала, порядковый номер этого ордера не будет формироваться, и естественно, эти документы не будут генерироваться на рабочих листах по созданию приходного и расходного ордеров. А отсутствие документа, при заполненном журнале регистрации привлечет внимание пользователя.

    Для того чтобы значение 0 не отражалось на экране, выполните команду Сервис | Параметры и в диалоговом окне Параметры на вкладке Вид в области Параметры окна щелчком мыши уберите галочку с опции Нулевые значения.

    Наиболее оптимальное заполнение журнала регистрации предполагается копированием выбранной строки с наиболее удовлетворяющими данными, последующей ее вставкой в конец таблицы и редактированием содержимого ячеек, если в этом возникает необходимость. Эта операция позволит значительно увеличить быстродействие операции по заполнению журнала.

Информационная область

    В ячейку А1 вводится наименование организации. Для контроля остатка денежных средств в кассе в ячейку А2 введите формулу:

  =СУММ(C11:C200)-СУММ(G11:G200).
которая вычитает общую сумму по расходным ордерам, введенных в столбец G из сумм по приходным ордерам, введенных в столбец С, на основании чего будет автоматически определяться остаток денег в кассе после ввода данных для формирования ордеров

Контроль лимита кассы

    Если на предприятии установлен лимит кассы, то тогда размер этой суммы введите в ячейку L2 (или любую другую по усмотрению).

    Для того, что видеть, не превышается ли лимит кассы, введите в ячейку F1 формулу, основанную на функции ЕСЛИ:

  =ЕСЛИ(A2<L2;"";"Превышение лимита кассы!")
которая сравнивает значение лимита кассы со значением остатка по кассе. И если лимит превышен, то выдается предупреждающая надпись: Превышение лимита кассы!. В противном случае никакого значения эта ячейка не возвращает.

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




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