Редактор Visual Basic for Application


Любая система программирования, помимо основной части — транслятора (то есть компилятора или интерпретатора) языка программирования, должна включать среду программирования, обеспечивающую автоматизированную разработку и выполнение программ на данном языке, и подготовку соответствующей документации. Как правило, все современные системы программирования имеют хороший инструментарий для корректного напи сания программы, ее форматирования, редактирования и отладки, встроенный в удобный и интуитивно понятный интерфейс, способствующий всесторонней поддержке программирования.
В этом разделе мы рассмотрим редактор VBA, работу со справочной системой и, наконец, расскажем о ведении проекта, его свойствах и интеграции с другими проектами.
Итак, вся разработка и отладка программ ведется с помощью Редактора Visual Basic (Visual Basic Editor, VBE). Запуск редактора для приложений Microsoft Office осуществляется следующим образом > Сервис > макрос > Редактор visaul Basic (<Alt>+<F11>).
Обычно в окне редактора используются три панели (три отдельных окна). На самом деле окон может быть и больше и меньше, и скоро вы узнаете обо всех, но это — основные окна, открывающиеся по умолчанию:

  • Project (Окно проекта);
  • Properties (Окно свойств);
  • Code (Окно кода).

Итак, первое окно, которое мы рассмотрим, — окно проекта, обычно располагающееся в верхнем левом углу редактора. Если оно не активно, выберите команду > view > Project Explorer либо нажмите комбинацию клавиш <Ctrl>+<R>.
В окне проекта отображается иерархическое дерево проектов приложения и модулей этих проектов с их элементами. О проектах VBA будет более подробно рассказано чуть ниже, сейчас же мы рассмотрим лишь возможности редактора.
В нашем случае в окне проекта открыт только один проект — Проект 1.
Каждый проект содержит пять папок с модулями:

  • Microsoft Outlook Objects — папка с объектом приложения ThisOutlookSession;
  • Forms — папка содержит пользовательские модули форм (userForm. — "Разработка приложения")’,
  • Modules папка содержит стандартные модули пользователя;
  • Class Modules папка содержит пользовательские модули классов;
  • References — папка содержит ссылки на объекты из внешних библиотек и список модулей этих библиотек.

Если окно кода не активно, выберите команду > View > Code или нажмите клавишу <F7>.
О добавлении, удалении и переименовании модулей в проекте будет рассказано ниже.
Помимо области, где отображаются документы, на панели проекта располагаются три кнопки.

  • View Code. После нажатия на данную кнопку указатель перемещается в окно кода, где отображается код выделенного объекта.
  • View Object. При нажатии этой кнопки показывается реализация выделенного объекта. Например, если выделен Лист2, то при нажатии кнопки View Object вы увидите второй лист рабочей книги Excel.
  • Toggle Folders. При нажатой кнопке отображаются элементы проекта в соответствующих кнопках, при отжатой — элементы проекта располагаются просто в алфавитном порядке.

Перейдем теперь к рассмотрению окна свойств, обычно располагающегося под окном проектов. Данное окно позволяет просматривать и изменять свойства различных объектов, входящих в проект. Для отображения свойств
объекта его необходимо выделить. Объект можно выделить на панели проектов, на пользовательской форме. Кроме того, можно выделять объекты, подчиненные выделенным объектам. Так, например, для модуля доступно только свойство Name. Более эффективен этот прием при работе с многочисленными объектами, подчиненными пользовательским формам.
Чтобы изменить значение свойства объекта, необходимо: Выделить имя свойства в левой колонке.
Изменить значение этого свойства в правой колонке либо введя его с клавиатуры, либо выбрав из раскрывающегося списка.
Безусловно, окно свойств — очень полезный инструмент, поскольку сразу видны почти все свойства объекта и их допустимые значения. Но изменение свойств объекта посредством панели статично и не обладает программной динамикой. Подобная панель удобна для задания начальных или постоянных значений свойств объекта, таких как имя листа или цвет пользовательской формы. Мы изменили имя первого модуля Moduiei на Test.
Кстати, свойства можно отображать как в алфавитном порядке, так и по категориям, посредством выбора соответствующих вкладок Alphabetic или Categorized. Следующая рассматриваемая нами панель — панель кода. Это окно занимает большую часть экрана. Данная панель — это не просто "чистый лист", предназначенный для ввода кода, а специализированный высокоинтеллектуальный текстовый редактор, существенно облегчающий введение, форматирование и редактирование кода VBA. Окно кода напрямую связано с модулем проекта и открывается при двойном щелчке мышью по необходимому модулю в окне проекта.
Замечание
Вообще говоря, окно кода является "многодокументным", т. е. можно открыть одновременно несколько окон данного типа для разных модулей. На каскадно отображены три окна трех модулей соответственно. Для изменения отображения окон можно воспользоваться командами меню Window.
Здесь мы опишем главные возможности редактора кода VBA:

  • Автоматическое завершение ввода стандартных лексем языка. Например, после ввода ключевого слова sub имяПроцедуры и нажатия клавиши <Enter> VBA автоматически добавляет скобки и строку End Sub.
  • Автоматическое выравнивание и отступ. К примеру, после ввода оператора присваивания р=р+1 и нажатия клавиши <Enter> редактор вставит пробелы: р = р + 1.
  • Автоматическое выделение цветом лексических и синтаксических конструкций. Ключевые слова VBA выделяются синим цветом, ошибочные конструкции — красным, а комментарии — зеленым.
  • Автоматическая проверка правильности семантики и синтаксиса конструкций. Если вы введете inputBox () и забудете присвоить значение этой функции переменной (потеря семантики), автоматически появится предупреждение об ошибке.
  • Автоматический вывод списка компонентов. .Позволяет избежать ошибок при вводе наименований свойств объектов, встроенных констант, типов переменных. Особенно полезна эта функция при установке свойств объекта, т. к. дает возможность не только вспомнить правильное имя свойства, но и увидеть, какие свойства объекта доступны в данный момент.
  • Автоматический вывод кратких сведений. Показывает в виде подсказки синтаксис встроенных процедур и функций. По мере ввода очередной параметр выделяется жирным шрифтом.

Если вы тестировали примеры предыдущего раздела, то не раз должны были встречаться со всеми свойствами редактора. Неправда ли, он умен? Но это только внутренняя часть окна кода, рассмотрим теперь его интерфейс.
В левом верхнем углу окна кода размещается раскрывающийся список Object (Объект), содержащий объекты выделенного модуля. Понятно, что для стандартного модуля этот список отсутствует, но, скажем, для модуля Этакнига данный список содержит объект workbook, для которого можно написать процедуры реакции на событие. Но и тут "умное" окно кода приходит на помощь. В правом верхнем углу в раскрывающемся списке Procedure (Процедура) содержатся все стандартные процедуры реакции на события для этого объекта. В случае со стандартным модулем этот список содержит все процедуры модуля, а также общий раздел объявлений Declarations (Объявления), в котором описываются переменные уровня модуля. При этом, выбрав одну из процедур в этом списке, вы автоматически попадете на ее начало.
С помощью кнопок в левом нижнем углу окна можно выбрать один из двух видов представления кода в окне:

  • представление процедуры, когда в окне отображается только выбранная процедура;
  • представление полного модуля, когда в окне отображается сразу несколько процедур, которые отделены друг от друга тонкой линией.

Для более детальной настройки интерфейса всегда можно воспользоваться диалоговым окном Options (Опции) меню Tools (Инструменты). В нем вам предоставляется возможность изменить такие установки, как автоматическая проверка и помощь при вводе кода, разделение процедур тонкой чертой, изменение параметров шрифта кода, размещение окон редактора и т. д. Настройка редактора достаточно проста, и мы не будем подробно ее описывать. Если же у вас возникнут вопросы по назначению того или иного параметра, вы всегда можете обратиться к справочной системе VBA, о работе с которой и пойдет сейчас речь.
Современные системы программирования отличаются от систем программирования прежних лет:

  • очень богатым набором готовых программных компонент, которые можно использовать в программах (об этом пойдет речь;
  • очень развитой системой получения информации о среде программирования непосредственно из самого редактора (об этом рассказывается в настоящем разделе).

Нельзя объять необъятное, а точнее, невозможно (да и не нужно) в рамках этой книги описать весь VBA. Наша цель, как было сказано, краткое изложение полного вводного курса в VBA. Однако всего не опишешь. Поэтому мы советуем вам за ответом на тот или иной появившейся вопрос обращаться к встроенной справочной системе VBA. Умение пользоваться ею — это необходимое условие работы программиста и, мы думаем, не стоит уделять внимание обсуждению вопроса, насколько необходимо это условие, ибо без навыков работы со справочной системой невозможно быстрое и полноценное программирование.