Окно проводника проекта (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)