Окно проводника проекта (Project Explorer) и структура проекта VBA
Окно проводника проекта при первой активизации редактора Visual Basic обычно открыто. Если оно случайно было закрыто, то вызвать его можно тремя способами:
q нажать клавиши <Ctrl>+<R>;
q нажать кнопку Project Explorer на панели инструментов Standard;
q воспользоваться меню View | Project Explorer.
В окне Project Explorer представлено дерево компонентов вашего приложения VBA.
Самый верхний уровень — это проект (Project), которому соответствует документ Word, рабочая книга Excel, презентация PowerPoint или другой файл, с которым работает данное приложение. Если редактор Visual Basic открыт из Excel, то в Project Explorer будут открытые книги Excel и специальная скрытая книга PERSONAL.XLS.
Кроме того, что обычно содержится в документах Office (текст, рисунки, формулы и т. п.), каждый проект (который и является документом) — это одновременно и контейнер для хранения стандартных модулей, модулей классов и пользовательских форм. Добавить в проект каждый из этих компонентов можно при помощи меню Insert или через контекстное меню в Project Explorer.
Стандартный модуль — это просто блок с текстовым представлением команд VBA. В модуле этого типа может быть только два раздела:
q раздел объявлений уровня модуля (объявление переменных и констант уровня модуля);
q раздел методов модуля (расположение процедур и функций).
При работе макрорекордера в Excel в проекте personal.xls или в текущей рабочей книге (в зависимости от места сохранения макроса) автоматически создается стандартный модуль Module1, куда и записываются все создаваемые макрорекордером макросы.
В большинстве проектов VBA используется только один стандартный модуль, куда записывается весь код. Создавать новые стандартные модули имеет смысл только из следующих соображений:
q для удобства экспорта и импорта (из контекстного меню в Project Explorer). Так можно очень удобно обмениваться блоками кода между приложениями VBA (и обычного VB);
q для повышения производительности. При вызове любой процедуры модуля происходит компиляция всего модуля, поэтому иногда выгоднее разместить процедуры в разных модулях, чтобы компилировать только нужный в данный момент код;
для улучшения читаемости. Если ваше приложение выполняет разные группы задач, то код, относящийся к каждой группе, лучше поместить в свой модуль.
Пользовательская форма является одновременно хранилищем элементов управления и программного кода, который относится к ним, к самой форме и происходящими с ними событиями.
Еще одна полезная возможность Project Explorer — настройка свойства проекта. Для этого нужно щелкнуть правой кнопкой мыши по узлу VBAProject и в контекстном меню выбрать Project Properties (окно свойств проекта можно открыть и через меню Tools | Project Properties). В этом окне можно:
q изменить имя проекта. Это может потребоваться, если у вас есть ссылки на проект с таким же именем;
q ввести описание проекта, информацию о файле справки и параметры, которые будут использоваться компилятором;
q защитить проект, введя пароль. Не зная этот пароль, проект нельзя будет просмотреть или отредактировать.
Тем не менее, в окне Project Explorer обычно приходится выполнять следующие действия.
q Если вам нужно создать свой макрос вручную, а макросов в данном документе еще нет, то нужно щелкнуть правой кнопкой мыши по узлу проекта (строке, выделенной полужирным шрифтом) и в контекстном меню выбрать команду Insert | Module. В проекте будет создан новый модуль и сразу открыт в окне редактора кода.
q Если вы уже создавали макросы в этом проекте (макрорекордером или вручную), то модуль будет уже создан. Его можно увидеть под контейнером Modules. Чтобы его открыть в окне редактора кода, достаточно щелкнуть по модулю два раза левой кнопкой мыши. Там можно будет найти макросы, созданные вами ранее средствами макрорекордера.
q Внимание
Обязательно подумайте, где вам будет нужен создаваемый код — только в одном документе или во всех документах данного приложения. Если он будет нужен только в одном документе, используйте стандартный программный модуль этого документа. Если во всех, то используйте программные модули проекта PERSONAL.XLS.
q Если вам нужно создать графическую форму с элементами управления (кнопками, текстовыми полями, раскрывающимися списками и т. п.), то нужно щелкнуть правой кнопкой мыши по узлу проекта и в контекстном меню выбрать Insert | UserForm. Новая форма будет создана и открыта в режиме дизайнера форм
Теперь, когда программный модуль создан (или найден), можно приступать к работе с редактором кода VBA.
Из чего состоит код?
Итак, мы научились проектировать интерфейс программы. Но для полноценной программы этого не достаточно. Нужно написать код программы, который будет манипулировать элементами управления и производить какие-то вычисления. Это самый сложный этап.
Во всех языках высокого уровня программный код состоит из:
- Переменных
- Выражений
- Операторов
- Управляющих структур
- Функций
- Классов и объектов
VBA является современным языком программирования, полностью оснащенным всеми необходимыми структурными операторами и типами данных.
Кроме того, в VBA применяются объекты, что делает его использование при разработке прикладных программ более понятным и легким. В объектно-ориентированном программировании данные и код, который манипулирует этими данными, объединены в структуре, называемой объектом. Объект обладает определенными свойствами и методами.
Свойства - это характеристики объекта, такие как размер, цвет, положение на экране, или состояние объекта, например доступность или видимость.
Методы – это действия, выполняемые над объектом.
Пример.
Worksheets(“Лист1”).Visible = False | С помощью установки свойству Видимость значения Ложь скрывается рабочий лист “Лист 1”. |
Worksheets (“Лист 2”).Delete | При помощи метода Delete удаляется этот рабочий лист “Лист 2” . |
Программный объект может являться частью другого, большего программного объекта. Для доступа к свойствами и методам объекта, являющегося составной частью более крупного объекта, нужно определить каждый из сборных объектов, начиная с самого левого (большего объекта), а затем поставить точку и указать следующий, составной объект, затем опять ставится точка и определяется следующий внутренний объект, пока не будет определен объект, к свойствам и методам которого необходимо получить доступ. (аналог адрес )
Пример.
Workbooks("Kнигa1").Worksheets(“Лucm1").Range("A14").Font – получаем доступ к рабочей книге "Книга1", рабочему листу “Лист1", шрифту ячейки "A14".
Объектами Excel являются таблицы, рабочие книги, диаграммы, области ячеек и др. Семейство представляет собой объект, содержащий несколько других объектов, как правило, одного и того же типа.
Например, семейство Workbooks объединяет все открытые рабочие книги.
Обратиться к элементу семейства можно по имени или номеру.
Пример:
Worksheets (“Лист1”) или Worksheets (1)