Элементы редактора VBA
а) Проект VBA
Проект – это часть приложения, видимая на экране при его создании и позволяющая управлять его элементами.
Открывается окно проекта командой View-Project Explorer. В окне Project отображаются список проектов открытых рабочих книг и структура каждого проекта.
Проект VBA имеет иерархическую структуру и включает в себя:
1) Объекты Excel – это рабочие книги (WorkBooks), рабочие листы (WorkSheets) и диаграммы (Charts). С каждым объектом связан модуль, в котором может быть помещен программный код;
2) В разделе форм (Forms) сохраняются пользовательские формы и модули форм, содержащие коды обработки событий формы и ее элементов управления;
3) Модули (Modules) содержат макросы, пользовательские процедуры и функции;
4) Модули класса (Class Modules) – здесь размещается программный код класса
Весь проект представляет собой один файл – рабочую книгу и сохраняется вместе с ней.
б) Окно редактирования кода
Код программы помещается в модуле.
Добавление модуля осуществляется двумя способами:
1) Вставка-Модуль (Insert-Module)
2) При создании макроса, когда программа создается автоматически.
Окно программного кода предназначено для ввода, просмотра и редактирования процедур и функций модуля. В данном окне можно просмотреть код отдельной процедуры или код всего модуля. Выбрать режим просмотра можно нажав одну из двух кнопок в левом нижнем углу окна редактирования кода.
В верхней части окна редактирования кода размещены два раскрывающихся списка. Левый содержит имена объектов, а правый перечень событий для выбранного в левом списке объекта.
Для открытия окна используется команда Вид-Программа (View-Code) или двойной щелчок по имени модуля.
Редактор кода позволяет автоматизировать написание программных операторов, свойств и параметров.
в) Окно редактирования формы
Для создания диалоговых окон приложений служат пользовательские формы. Форма – это объект, обладающий большим набором свойств, методов и событий. Визуально экранная форма – это диалоговое окно в котором размещены различные элементы. Форма может содержать меню, кнопки, списки, полосы прокрутки и другие элементы управления.
Редактор форм является основным инструментом визуального программирования. Чтобы добавить форму в проект надо выполнить команду меню Insert-UserForm. Появится окно редактирования форм и панель элементов, а также окно свойств Properties UserForm. Окно свойств можно открыть командой меню Вид-Окно свойств (View-Properties Windows). Панель элементов можно открыть командой View-ToolBox или щелкнуть по кнопке панели инструментов ToolBox.
В окне Properties имеется раскрывающийся список объектов формы и две вкладки (По алфавиту и По категориям) со списком свойств и их значений для выбранного объекта. Чтобы изменить значение свойства надо выделить свойство в левой колонке и изменить его значение в правой колонке.
г) Окно просмотра Object Browser
Ввод команд автоматизирован. При наборе команды или свойства VBA предлагает список компонентов для завершения программной строки. Список существующих компонентов и объектов можно увидеть в окне просмотра, которое открывается командой меню View-Object Browser.
4. Структура программы VBA
Программа VBA (программный код) представляет собой совокупность процедур и функций, размещаемых в одном или нескольких модулях. Каждый модуль имеет две области: общую область и область подпрограмм. В общей области помещаются операторы описания переменных, которые являются общими для всех процедур и функций этого модуля. В области подпрограмм помещается код программы.
Программный код VBA
Программный код VBA представляет собой последовательность лексических единиц (лексем), записанных в соответствии с принятыми синтаксическими правилами. Под лексемой понимается единица текста программы, которая имеет определенный смысл для VBA и не может быть разбита в дальнейшем. В VBA имеется 6 классов лексем:
1) идентификаторы (имена переменных, процедур и др.) - должны начинаться с буквы и не должны содержать пробелов, знаков пунктуации, знаков операций, специальных символов, зарезервированных слов;
2) зарезервированные слова (As, Public, Date и др.) – выводятся синим цветом;
3) константы - это объекты, значения которых остаются постоянными и не могут быть изменены во время выполнения программы;
4) строки (строковые константы);
5) знаки операций (+,-, /, >, = и т.д.);
6) разделители (знаки пунктуации).
Для обеспечения читаемости и понятности в тексте программы помещаются комментарии. Комментарии – это строка поясняющего текста, которая игнорируется программой. Комментарий должен начинаться со знака апострофа (‘). Такие строки в процедуре выделяются зеленым цветом.
Каждая команда программного кода записывается в отдельной строке по определенному правилу. В VBA команду принято называть оператором, правило записи команды синтаксисом или форматом. Если в командной строке нарушен синтаксис или сама команда не верна, она выделяется красным цветом. Оператор может состоять из единственного ключевого слова или комбинации элементов, может включать выражения.
Выражения – это комбинация знаков операций и операндов, также скобки. Назначение любого выражения – получение некоторого значения. Для формирования и последующего вычисления выражения служат операции. Операнды в выражении связаны знаками операции (A=B*C-D).
Различают:
1) операции присваивания (ИмяПеременной=Выражение, например, Nstr=3),
2) математические операции (сложение (+), вычитание (-), умножение (*), деление (/), целочисленное деление ()),
3) операции отношения (равно, не равно, больше, меньше и др.),
4) логические операции (используются операторы AND (И), OR (ИЛИ), NOT(отрицание), XOR (отрицание отрицания),
5) операции работы со строками (конкатенация - & - объединение)
Для переноса части команды на другую строку в конце первой необходимо поставить символ подчеркивания ( _ ).
А) Процедуры
Процедура – это последовательность команд или операторов, которые выполняются над объектами. Процедура, в отличие от функции, значение не возвращает.
Различают следующие типы процедур:
· Процедуры обработки событий;
· Процедуры макросов;
· Процедуры пользователя
1. Процедуры обработки событий связаны с каким-либо объектом и вызываются тогда, когда происходит соответствующее событие. Они имеют синтаксис:
Private Sub ИмяОбъекта_Событие()
<Код обработки события>