Принципы разработки приложений на VBA
15.1. Среда разработки – редактор Visual Basic
Независимо от приложения в редактор VB можно перейти:
- нажав кнопку Visual Basic в группе Код вкладки Разработчик;
- с помощью функциональных клавиш Alt-F11.
Возврат в офисный документ из редактора Visual Basic выполняется:
- последней командой меню View, которая указывает на название офисного приложения, например, командой Microsoft Excel;
- нажатием на первую кнопку стандартной панели инструментов Visual Basic, определяющую приложение;
- клавишами Alt-F11 или Alt-Q.
Окна редактора VB
Основные компоненты разработки, отладки и запуска программ – это окна редактора VB. На рис.15.1 показан вид среды разработки MS Excel. Среда разработки в других офисных приложениях выглядит примерно так же.
Project Window (окно проекта)
Программные компоненты документа (модули, процедуры, формы) объединяются в проект, который сохраняется на диске вместе с документом MS Office.
Проект на VBA нельзя создать независимо от документа. Каждому документу соответствует проект с именем, состоящим из двух частей: первая часть – VBAProject для MS Excel и MS PowerPoint и Project для MS Word, вторая часть – название документа в скобках. Подобное имя присваивается проекту по умолчанию.
Основное предназначение окна проекта (рис.15.1 и рис.15.2) – обеспечение навигации в проекте. Проект имеет иерархическую структуру, представляющую в виде папок все составляющие проекта: модули (Modules), формы (Forms), объекты приложения (например, Microsoft Excel Objects для MS Excel), пользовательские классы (Classes) и ссылки на другие проекты (References).
Показать окно проекта можно при помощи:
- нажатия на кнопку стандартной панели инструментов VBA;
- команды Project Explorer меню View;
- клавиш Ctrl+R.
Окно кода программы (Code)
В окне кода программы (рис.15.3) отображаются тексты процедур объекта, выделенного в окне проекта. Программа, управляющая объектом проекта, располагается на связанном с объектом процедурном листе, называемом "модуль – обработчик событий". Программы, не связанные с конкретными объектами, располагаются в стандартных модулях папки проекта Modules. В дальнейшем будем использовать термин "модуль", имея в виду, что все сказанное распространяется на модуль – обработчик событий и на стандартный модуль, если иное не оговорено особо.
Программы высвечиваются:
- двойным щелчком на элемент в окне проекта;
- командой Code из меню View или нажатием клавиши F7 после выделения элемента проекта.
Редактор программ позволяет просматривать и редактировать процедуры модуля. Процедура – это последовательность операторов языка, начинающаяся с оператора Sub и заканчивающаяся оператором End Sub. Все операторы, заключенные между этими двумя операторами, составляют тело процедуры. Дополнительно к процедурам в начале модуля могут располагаться инструкции компилятору, операторы объявления глобальных и модульных переменных или переменных пользовательских типов.
В окне программы может отображаться текст одной процедуры (procedure view) или текст модуля целиком (full-module view). Переключение режимов просмотра выполняется нажатием соответствующей кнопки в левом нижнем углу окна программы (рис.15.3).
Вверху окна программы расположены два списка: список объектов слева и список процедур справа. Содержание списков зависит от типа объекта, для которого высвечено окно программы.
Если это стандартный модуль, то список объектов содержит только одну строку – General, а список процедур – строку Declarations и перечень процедур модуля.
Выбор строки Declarations переводит в раздел объявления переменных, в котором располагаются инструкции компилятору и описания переменных, общих для всех процедур модуля или проекта в целом.
Если окно программы отображает процедурный лист для формы или объекта документа (рис.15.3), то дополнительно к строке General список объектов содержит перечень объектов внутри выбранной формы или объекта документа. При выделении объекта в списке справа отражается перечень событий, связанных с выделенным объектом. На рис.15.3 в окне программы, открытом для рабочей книги, в списке объектов выделен объект Listbox с именем lst_sheet, и для него открыт перечень событий.
В отличие от текстовых редакторов редактор кода программы (или просто редактор кода) не только отображает вводимый текст, но и автоматически вносит изменения. Настройка окна редактора кода выполняется на вкладке Editor команды Tools-Options (рис.15.4).
Редактор кода:
- изменяет написание ключевых слов, устанавливая прописную букву в начале слова;
- проверяет синтаксис операторов;
- высвечивает подсказку по функциям, свойствам и методам объекта;
- меняет цвет слов для команд, комментариев, синтаксических ошибок в соответствии с установками, сделанными на вкладке Editor Format.
Текст (код) программы можно создать в любом текстовом редакторе и вставить его в модуль, используя команды копирования и вставки.
Окно свойств объектов (Properties Window)
Свойство – это некий атрибут объекта, например, его название. Окно свойств вызывается командой Properties меню View или нажатием на пиктограмму . Окно свойств высвечивает и позволяет изменять свойства объекта, выделенного в окне проекта или в окне формы. Если выделен стандартный модуль или проект, то в окне свойств отображается его единственное свойство – Name (имя). Если же выделен, например, объект Userform, то в окне свойств (рис.15.5) показана таблица с перечнем его свойств.
Свойства можно просматривать в алфавитном порядке (вкладка Alphabetic) или с группировкой по категориям (вкладка Categorized).
Свойства объектов можно изменять в режиме конструктора (Design time) или в режиме выполнения программы (Run time). Некоторые свойства объектов можно менять в любом режиме, а отдельные свойства подлежат изменению только в режиме конструктора или только в режиме выполнения программы. Если свойства объектов меняются только в режиме выполнения, то они никогда не видны в окне свойств объекта.
Остальные окна редактора Visual Basic, перечисленные ниже, рассматриваются в разделах, которые связаны с высвечиванием информации в них:
- Object Browser – окно просмотра объектов, их методов и свойств, доступных в разных библиотеках, модулях и пользовательских приложениях;
- Immediate Window, Locals Window, Watch Window – окна отладчика, предназначенные для изменения значений переменных и тестирования операторов, для отслеживания значений переменных, для наблюдения за ходом выполнения программы в процессе отладки.