
- •Лабораторная работа 02. Тема "Автоматизация рабочего процесса по формированию и учету кассовых документов"
- •Техническое задание
- •Приемы автоматизации заполнения журнала кассовых документов
- •Запись кода формул определения порядкового номера и замены строки с формулами на значения
- •Соединение макросов
- •Абсолютная и относительная ссылки при выполнении макроса
- •Методы ввода кода vba
- •Примечания
- •Панель инструментов Правка
- •Пользовательские диалоговые окна
- •InputBox("Введите сумму расходного документа", "Ввод данных")
- •Приходный кассовый ордер
Примечания
И последний элемент редактирования подпрограммы - добавление примечаний для описания действий выполняемых подпрограммой. Примечания не являются командами и при выполнении макроса игнорируются.
Для того, что бы строка являлась строкой примечания необходимо в начале строки добавить знак апострофа "'". Ввод этого знака может осуществляться двумя методами:
поместите курсор в начало строки и введите знак апострофа с клавиатуры; поместите курсор на строку или выделите блок строк и нажмите на кнопку Закомментировать блок на панели инструментов Правка (рис. 5.11.).
Для того чтобы убрать знак комментария удалите знак апострофа, используя клавиши Delete или Backspace, или выделив строку (блок строк) нажмите кнопку Раскомментировать блок, на панели инструментов Правка.
Панель инструментов Правка
Довольно большие возможности при записи, редактировании и просмотра текста подпрограмм предоставляет панель инструментов Правка, которая вызывается командой Вид/Панели инструментов/Правка или с помощью контекстного меню. В дальнейшем будут ссылки на эту панель, поэтому есть смысл описать функциональные возможности расположенных на ней кнопок:
Список свойств/методов - выводит раскрывающийся список доступных для объекта свойств и методов;
Список констант - выводит раскрывающийся список доступных констант для введенного свойства;
Сведения - выводит синтаксис выбранной в окне модуля переменной, функции, инструкции, процедуры или метода;
Параметры - при установке курсора на функции или инструкции выводит в окне модуля сведения об их параметрах;
Завершить слово - если введено достаточно символов для распознавания текста кода, то завершает его ввод;
Увеличить отступ - смещает все выделенные строки в следующую позицию табуляции;
Уменьшить отступ - смещает все выделенные строки в предыдущую позицию табуляции;
Точка останова - производит установку или удаление строки, в которой находится курсор;
Закомментировать блок - добавляет в начале каждой строки символ комментария (') всего выделенного текста подпрограммы;
Раскомментировать блок - удаляет в начале каждой строки символ комментария (') всего выделенного текста подпрограммы;
Закладка - снимает или удаляет символ закладки строки, в которой находится курсор;
Следующая закладка - перемещает курсор к строке следующей закладки;
Предыдущая закладка - перемещает курсор к строке предыдущей закладки;
Снять все закладки - удаляет все установленные закладки.
Рис. 5.11. Панель инструментов Правка
Полученная подпрограмма ввода записи в журнал регистрации кассовых документов
После ввода примечаний полученный макрос ввода записи в журнал регистрации кассовых документов должен выглядеть, как показано на рис. 5.12.
Рис. 5.12. Полученный макрос ввода записи в журнал регистрации кассовых документов
Создание макроса заполнения записи приходного ордера в журнал регистрации кассовых документов
Для создания аналогичного макроса для заполнения области приходного ордера достаточно выделить область макроса РасходныйОрдер в окне программы, скопировать выделенный фрагмент в буфер обмена, поместив курсор в конец строки End Sub и произвести вставку из буфера обмена. После чего переименовать новый макрос в ПриходныйОрдер и отредактировать макрос (рис. 5.13.).
Рис. 5.13. Макрос ПриходныйОрдер формирования записи приходного ордера в журнал регистрации кассовых документов
Усовершенствование созданного приложения
У созданных процедур, оказывающих помощь при заполнении журнала кассовых документов, есть два существенных недостатка:
при вводе записи каждого кассового документа необходимо помещать табличный курсор в ячейку ввода даты этого документа;
данные вводятся непосредственно в ячейки рабочего листа, что тоже не совсем удобно.
Для устранения первого недостатка необходимо найти алгоритм поиска первой пустой строки журнала, в которую будут вводиться данные, а для устранения второго - создать пользовательское диалоговое окно для ввода этих данных.
Автоматический поиск первой пустой строки журнала
В предыдущей главе ввод данных в конец списка журнала регистрации осуществлялся их вводом в самую последнюю строку предполагаемой к заполнению области списка, а затем с помощью операции сортировки по порядковому номеру содержимое этой строки перемещалось в конец журнала регистрации. Алгоритм создания такого алгоритма довольно прост и может использоваться в табличных базах данных, имеющих сравнительно небольшой объем, например, 200 строк. Но при необходимости произвести сортировку списка, состоящую из пяти - десяти тысяч строк, потери времени на выполнение этой операции будут существенны.
Выход из создавшейся ситуации заключается в создании алгоритма автоматического поиска первой незаполненной строки и активизации ячейки, в которую будет вводиться дата.
Усовершенствуйте подпрограмму РасходныйОрдер. В связи с тем, что книга предназначена больше как учебное пособие, то не будем проводить редактирование подпрограммы, а создадим следующую РасходныйОрдерАвто.
Для создания новой подпрограммы прямо в Редакторе Microsoft Visual Basic выполните следующие действия:
выделите все тело подпрограммы РасходныйОрдер и скопируйте в буфер обмена;
с помощью комбинации клавиш [Ctrl+End] переместите курсор в конец окна программ и произведите вставку скопированного текста из буфера обмена;
измените имя подпрограммы, дополнив ее текстом Авто.
Допишите в начале подпрограммы две строки кода VBA, приведенные на рис. 5.14.
Рис. 5.14. Код VBA поиска первой пустой строки и код активизации ячейки ввода даты для формирования записи расходного кассового ордера
Рассмотрим первую строку. Ее задача - присвоить переменной Row значение, которое равно количеству заполненных ячеек на активном рабочем листе в диапазонах В11:В200, F11:F200 увеличенному на значение "11".
Первая строка основана на применении функции СЧЕТЗ (рис. 5.15), производящей подсчет непустых ячеек в указанном диапазоне. В нашем примере выбран диапазон ввода даты приходных и расходных кассовых ордеров. Значение 11 - количество строк с 1-й по 10-ю, в которые не вносятся записи о кассовых операциях, увеличенное на единицу.
Задача второй строки - выделить ячейку на пересечении номера определенной строки и шестого столбца. Номер строки задается переменной Row.
Рис. 5.15. Панель функции СЧЕТЗ
Переменные
В книге довольно часто будут использоваться переменные. Они применяются для управления данными при выполнении подпрограммы, что позволяет делать подпрограмму более читаемой, и, как правило, экономит время разработчика и время выполнения подпрограммы. По правилам, прежде чем использовать переменную в тексте программы, ее нужно описать. Описание производится до того, как эта переменная будет использоваться, как правило, в начале подпрограммы и заключается в присвоении типа данных, к которым принадлежит эта переменная. Это необходимо, для того чтобы в памяти было выделено место для хранения значения переменной во время выполнения программы. При описании переменной в большинстве случаев повышается скорость выполнения программы. Это выгодно, если на выполнение подпрограммы требуется какое-то значимое время.
Временем жизни переменной называется время, в течение которого переменная может иметь значение. Значение переменной может меняться на протяжении ее времени жизни.
Но с другой стороны процедура описания переменной не является обязательной и в связи с тем, что разрабатываемые приложения в этой книге преследуют другую цель, этому внимание не будет уделяться. Если же читателю это будет интересно, то он найдет эту информацию в специализированной литературе по Visual Basic of Application.