
- •Лабораторная работа 02. Тема "Автоматизация рабочего процесса по формированию и учету кассовых документов"
- •Техническое задание
- •Приемы автоматизации заполнения журнала кассовых документов
- •Запись кода формул определения порядкового номера и замены строки с формулами на значения
- •Соединение макросов
- •Абсолютная и относительная ссылки при выполнении макроса
- •Методы ввода кода vba
- •Примечания
- •Панель инструментов Правка
- •Пользовательские диалоговые окна
- •InputBox("Введите сумму расходного документа", "Ввод данных")
- •Приходный кассовый ордер
Абсолютная и относительная ссылки при выполнении макроса
Как правило, при механической записи макросов, Excel выполняет абсолютную запись, то есть сохраняет точные адреса ячеек при их активизации. В свою очередь "точный" адрес ячейки ведет свой отсчет от левого верхнего угла рабочего листа. Например, адрес ячейки В3 - (3,2) или пересечение третьей строки и второго столбца.
При относительном режиме записи адрес ячейки будет зависеть от местонахождения активной ячейки на рабочем листе в данный момент времени, то есть отсчет ведется относительно адреса активной ячейки.
После выполнения записанной в Макрос1 операции с активной ячейкой F16, на которую предварительно устанавливается табличный курсор перед запуском макроса на выполнение, необходимо перейти на ячейку Е16 для проведения операции записанной в Макрос2. Для этого задайте относительную ссылку перехода на эту ячейку. При вводе метода Select записанная строка означает команду - передвинуться от активной ячейки на 1 столбец влево и на 0 строк вниз (вверх) и выделить (активизировать) ее. Код VBA операции записывается так:
ActiveCell.Offset(0, -1).Select
в которой знак минус указывает, что необходимо передвинуться на один столбец влево, а значение 0 - передвинуться на ноль значений вниз и считать эту ячейку активной (ActiveCell) и выделенной (Select). Эту строку введите перед фрагментом, скопированным из Макрос2.
Для выполнения фрагмента из Макрос3 необходимо передвинуться на 4 столбца влево:
ActiveCell.Offset(0, -4).Select
А перед выполнением фрагмента из Макрос4 необходимо не только добавить относительный переход, но и выделить диапазон следующим образом:
ActiveCell.Offset(0, 0).Range("A1:F1").Select
Если макрос записывается в относительном режиме, то предполагается, что ячейка, в которой находится табличный курсор, имеет адрес А1, а указанный адрес ячейки (или диапазона) после относительного перехода, принимается по отношению к этой ячейке А1, поэтому если указать адрес А1:F1, то будет выделено шесть ячеек вправо, включая и активную ячейку, в которой находился табличный курсор. Или в нашем примере - ячейки А16:F16.
И последний элемент выполнения подпрограммы - переход на ячейку G16 для ввода суммы приходного ордера. Следовательно, надо задать команду перехода от активной ячейки на 6 ячеек вправо:
ActiveCell.Offset(0, 6).Select
Методы ввода кода vba
Запись кода VBA можно производить только с клавиатуры, а можно и с помощью диалогового окна Просмотр объектов (рис. 5.10.), которое активизируется командой Вид/просмотр объектов или нажатием на клавишу F2.
Рис. 5.10. Приложение Редактор Microsoft Visual Basic с открытым диалоговым окном Просмотр объектов в правом верхнем углу
При помощи окна Просмотр объектов можно просматривать в объектных библиотеках объекты, классы, методы, свойства, события, константы и функции. При помощи этого диалогового окна удобно использовать справочную систему Редактор Microsoft Visual Basic. Для этого выделите интересующий объект и нажмите на клавишу F1.
Нас же интересует возможности применения диалогового окна Просмотр объектов при написании кода VBA тех элементов подпрограмм, которые невозможно сгенерировать при помощи записи макросов, а они вводятся при последующем редактировании этих подпрограмм. Опишем на примере написания кода перемещения по рабочему листу при записи относительной ссылки. Соблюдайте следующую последовательность ввода кода:
в раскрывающемся списке Проект/Библиотека выберите библиотеку Excel;
в окне Компонент выделите объект ActiveCell и скопируйте в буфер обмена;
перейдите в окно программы и, установив курсор в теле подпрограммы, произведите вставку скопированного;
после ввода команды точка появится список свойств/методов, которые могут быть использованы для дальнейшего написания кода для этого объекта. С помощью полосы прокрутки найдите нужное свойство/метод. Поиск можно ускорить при вводе после точки первых символов кода. Для ввода кода свойства/метода в подпрограмму дважды клацните по нему правой кнопкой мыши и т.д.
Раскрывающийся список свойств/методов появляется при каждом вводе команды точка или же:
при выполнении команды Правка/Список свойств/методов;
при помощи контекстного меню;
комбинации клавиш [Ctrl+J];
нажатии на кнопку Список свойств/методов на панели инструментов Правка (рис. 5.11.).
Удобно при вводе текста кода VBA использовать возможность завершения его ввода при:
нажатии на кнопку Завершить слово на панели инструментов Правка (рис. 5.11.);
выполнении команды Правка/Завершить слово;
используя контекстное меню;
комбинации клавиш [Ctrl+Space].