- •Лабораторная работа 02. Тема "Автоматизация рабочего процесса по формированию и учету кассовых документов"
- •Техническое задание
- •Приемы автоматизации заполнения журнала кассовых документов
- •Запись кода формул определения порядкового номера и замены строки с формулами на значения
- •Соединение макросов
- •Абсолютная и относительная ссылки при выполнении макроса
- •Методы ввода кода vba
- •Примечания
- •Панель инструментов Правка
- •Пользовательские диалоговые окна
- •InputBox("Введите сумму расходного документа", "Ввод данных")
- •Приходный кассовый ордер
Приемы автоматизации заполнения журнала кассовых документов
Автоматизация заполнения журнала кассовых документов будет разделена на несколько этапов:
запись макросов ввода отдельных формул и последующая замена формул на определенные ими значения;
создание кода VBA поиска первой пустой строки в списке и перемещения по этой строке;
соединение всего кода VBA созданных макросов в одну подпрограмму, выполняющую всю последовательность действий в автоматическом режиме.
Изменение параметров Excel перед записью макросов
Завершить ввод данных в ячейки, если это не редактирование их содержимого, можно нажатием на самые различные клавиши: клавиши перемещения на одну ячейку (вниз, вверх, влево, вправо), Home, End, Page Up или Page Down. Самый же классический способ завершения ввода данных в Excel - нажатие на клавишу Enter, после чего, как правило, табличный курсор перемещается на ячейку ниже. И это довольно удобно. Большинство пользователей полагают, что это неизменяемое свойство Excel. На самом же деле этот параметр устанавливается при инсталляции Excel по умолчанию и при желании может быть изменен.
И если при работе по вводу данных непосредственно на рабочем листе, перемещение табличного курсора на ячейку ниже после фиксации ввода клавишей Enter - удобство, то при записи макроса - недостаток.
Недостаток заключается в том, что либо перед остановкой записи макроса или при проведении каких-либо других операций после ввода данных в ячейку (диапазон ячеек), адрес ячейки, в которой окажется табличный курсор, будет зафиксирован отдельной строкой кода VBA (см. рис. 5.5.).
В последующем, при выполнении записанного макроса, эта операция будет выполняться, как один из переходов на зафиксированную ячейку. Это увеличивает продолжительность выполнения макроса и "утяжеляет" файл Excel на количество символов этой строки. А при редактировании кода макроса в Редакторе Microsoft Visual Basic будет потрачено время на удаление этих строк.
Поэтому, прежде чем записывать макросы, связанные с операциями ввода данных, с помощью команды Сервис/Параметры откройте диалоговое окно Параметры и на вкладке Правка (рис. 5.2.) удалите флажок с опции Переход к другой ячейке после ввода. Иначе при записи макроса, перемещение табличного курсора после нажатия на клавишу [Enter] на ячейку, по заданному этой опцией в направлении, выбранном в раскрывающемся списке В направлении, будет отражено в сгенерированном коде макроса.
Рис. 5.2. Диалоговое окно Параметры вкладке Правка с открытым раскрывающимся списком В направлении при активизированной опции Переход к другой ячейке после ввода
Запись кода VBA при вводе формул в процессе записи макроса
Автоматизация процесса будет основана на написании четырех макросов и последующем их объединении с последовательностью выполнения операций, приведенных на рис. 5.3.
Рис. 5.3. Последовательность предстоящих операций, подлежащих автоматизации при формировании записи расходного кассового ордера в журнале
Автоматизация ввода текущей даты
Согласно правил заполнения журнала первым действием должен быть ввод даты проведения этой операции. Если операция заполнения журнала производится в день ее выполнения, то для автоматического ввода даты достаточно ввести в ячейку F16 функцию ввода текущей даты. Для этого используется функция СЕГОДНЯ (рис. 5.4.), которую можно ввести либо с помощью кнопки Мастер функций на стандартной панели инструментов, либо с клавиатуры:
=СЕГОДНЯ()
Функция СЕГОДНЯ не имеет аргументов и возвращает текущую дату.
Рис. 5.4. Панель функции СЕГОДНЯ
Для записи первого макроса последовательно выполните следующие действия:
введите в ячейку В16 функцию СЕГОДНЯ и не перемещайте табличный курсор;
выполните процедуру начала записи макроса, которому присвойте имя РасходныйОрдер и при необходимости введите его описание;
запись макроса заключается в последовательном нажатии на клавишу F2 (редактирование содержимого ячейки) и клавишу Enter;
произведите остановку записи макроса.
Рис. 5.5. Окно программы с кодом макроса РасходныйОрдер
При записи макроса РасходныйОрдер режим перехода на ячейку вниз отключен не был (рис. 5.2.). Поэтому на рис. 5.5. видите вторую строку кода:
Range("B17").Select
которую удалите при редактировании. В этой строке находится объект 4-го уровня иерархии - Range. Этот объект используется для ссылок на ячейку или диапазон ячеек.
Первая строка:
ActiveCell.FormulaR1C1 = "=TODAY()"
смысл которой заключается в том, что в активную ячейку (в которой находился до начала записи макроса табличный курсор) ввести формулу ввода текущей даты. Следует заметить, что все функции в коде VBA записываются на английском языке, а вводимые формулы заключаются в кавычки.
