Антон Орлов - Тайны и секреты компьютера
Если выбрать какой-нибудь элемент формы и из его контекстного меню выбрать пункт «Свойства», то откроется Окно свойств (рис. 1.11).
Рис. 1.11. Окно свойств элементов формы
Здесь можно задать все доступные свойства каждого элемента, например, его цвет, цвет границы, надпись, состояние — доступно/недоступно для изменений, поместить на элемент картинку из внешнего файла (пункт "Picture"). Все эти свойства также можно задавать программно, однако некоторые, вроде той же картинки, стоит задавать только в этом окне. Для получения подробного описания функции каждого элемента окна свойств (а состав этих элементов различен для каждого элемента формы) достаточно просто поставить на него курсор и нажать F1. Настоятельно рекомендуется подробно изучить предназначение всех элементов данного окна как с помощью вызова справки, так и с помощью изучения изменений в состоянии обьекта после изменения значения свойства.
Окно Просмотр обьектов, вызываемое кнопкой F2 или из меню Вид (рис. 1.12), является кратким справочником по всем возможным свойствам и методам (то есть действиям, командам) обьектов VBA. Можно посмотреть, какие свойства или методы доступны для каждого обьекта, какие обьекты в принципе существуют в VBA, вызвать справочный файл для каждого обьекта, свойства или метода.
Рис. 1.12. Окно Просмотр обьектов (справа)
На панели инструментов «Правка» редактора VBA имеются соответствующие кнопки для вызова вышеописанных функций. Так, кнопка "Список свойств/методов" позволяет увидеть возможные продолжения любой команды (то же самое можно получить, поставив после команды точку, но так неудобно делать в уже написанном тексте), а кнопка «Сведения» выводит информацию о переменной, которая в данный момент выделена. Как и в самом редакторе Word, в редакторе VBA можно вставлять закладки в текст программы для более удобного перехода к соответствующим его частям.
Все модули, входящие в состав проекта, можно сохранить в текстовом файле. Для этого в Менеджере проектов из контекстного меню правой кнопки мыши соответствующего модуля надо выбрать функцию "Экспорт файла". Модуль будет сохранен в текстовом файле с расширением".bas". Можно просто перетащить название модуля в окно Explorer'а, держа нажатой левую кнопку мыши — редактор VBA поддерживает механизм Drag-and-Drop. Вставить ранее сохраненный модуль можно через команду "Импорт файла" того же меню или путем перетаскивания его иконки в окно редактора VBA.
Модули и формы можно свободно перетаскивать между различными проектами, копируя их из одного проекта в другой.
Средства отладки программы
Редактор VBA обладает очень большими возможностями отладки программы, то есть поиска в ней алгоритмических и языковых ошибок. Поскольку язык VBA — не компилируемый, а интерпретируемый (то есть готовая программа представляет собой текст исходного кода, хранящийся в шаблоне или документе, который переводится в машинные коды при каждом ее запуске, в то время как конечный продукт средств создания программ на остальных языках программирования представляет собой файл с исполняемым машинным кодом), то после завершения написания кода и успешной его отладки программа готова к использованию.
Для запуска на выполнение готовой или записанной программы из редактора VBA необходимо нажать клавишу F5. Программа начнет выполняться и, если в ней вдруг найдутся ошибки в записи команд или обращения к неизвестным командам, будет выдано соответствующее сообщение (рис. 1.13).
Рис. 1.13. Сообщение об ошибке компиляции
Данное сообщение означает, что эта команда редактору VBA неизвестна. Значит — надо изменить код программы, соответственно исправив его.
(В VBA можно создавать собственные команды — функции или процедуры, которые могут вызываться так же, как и встроенные. Об этом будет рассказано в следующей главе.)
Если возникает ошибка вследствие неправильного использования команд VBA, то редактор VBA выдает диалоговое окно, в котором приводится некоторое описание ошибки. Так, при попытке выделить жирным шрифтом десятимиллионное слово в документе было выдано сообщение "Запрашиваемый номер семейства не существует" (рис. 1.14), так как десятимиллионного слова в документе не было.
В диалоговом окне на рис. 1.14, как можно видеть, есть кнопка под названием «Отладка».
Рис. 1.14. Сообщение об ошибке из-за неправильного использования команд VBA
Нажав на нее, можно перейти в режим отладки программы — то есть специального состояния редактора VBA, в котором программа может исполняться построчно, а программист имеет возможность видеть значения всех переменных программы и даже принудительно задавать эти значения. Также в режим отладки можно перейти из редактора VBA, поставив курсор внутрь программы и нажав клавишу F8.
Если ошибка произошла в макросе, находящемся в недоступном шаблоне (например, загруженным глобально через папку автозагружаемых файлов Word), то кнопка «Отладка» будет неактивна.
В режиме отладки программисту доступны следующие возможности:
1. Пошаговое исполнение программы. Выполняются все команды последовательно, но выполнение каждой команды требует нажатия кнопки F8. Если программа где-то выдает ошибку алгоритма, то можно посмотреть, на каком конкретно этапе это происходит. При пошаговом исполнении в редакторе подсвечивается желтым цветом команда, которая будет выполнена следующей.
2. Просмотр значений переменных. Подведя в режиме отладки курсор к имени любой переменной, можно увидеть ее значение (рис. 1.15).
Рис. 1.15. Просмотр значения переменной в режиме отладки
Кроме того, значения всех переменных программы можно увидеть в окне Локальные переменные (рис. 1.16, вызов — из меню Вид).
Рис. 1.16. Окно локальных переменных.
При дальнейшем выполнении программы значения переменных в этом окне принимают те значения, которые они имеют в программе. Это очень полезно для отладки алгоритма программы, когда необходимо найти ошибку в ее внутренней логике, связанную с неправильной или недостаточно точной разработкой порядка действий программы.
3. Точки останова. Если программа длинная, то проходить по всем ее строчкам с помощью кнопки F8 — занятие не слишком интересное и приятное. В этом случае лучше использовать точки останова, то есть отметки в тексте программы, где ее исполнение должно остановиться, а сама программа — перейти в режим отладки. Для установки точки останова нужно щелкнуть левой кнопкой мыши на сером левом поле окна модуля, и тогда появится коричневая строка с кружочком на месте точки останова (рис. 1.17).
Рис. 1.17. Точка останова. На самом деле она коричневая.
Начиная с этого места, программа будет выполняться пошагово по нажатию кнопки F8. Отказаться от пошагового выполнения можно путем нажатия кнопки F5. Точки останова полезны, когда нужно локализовать дающее ошибку место в программе, особенно если оно находится в середине текста или не единичное.
4. Окно контрольного значения. В этом окне можно задать определенное выражение, значение которого будет подсчитываться параллельно с выполнением программы. Кроме того, выделив в режиме отладки какое-нибудь выражение и нажав Shift и F9, можно увидеть его значение, а также добавить это выражение в окно контрольного значения и отслеживать его дальнейшие изменения.
Такая возможность необходима, например, при отладке длинной программы с множеством арифметических выражений, одно из которых дает ошибку. С помощью этого окна можно отследить, когда, при изменении какого параметра значение выражения станет неприемлемым.
К примеру, идет вычисление оптимального количества учеников в каждом классе с учетом множества параметров и где-то подозревается наличие ошибки: не сходится сумма количеств всех учеников во всех классах с количеством учеников в школе. Можно, конечно, обойтись без всяких там окон контрольного значения и вставить в текст программы после каждого вычисления проверку равенства суммы количества всех учеников во всех классах с численностью учеников школы, но это очень усложнит программу, да и потом придется удалять все эти добавления, — а если программа большая, то сделать это не так просто. Гораздо лучше поставить контрольное значение — сумму количеств всех учеников во всех классах — и при пошаговом исполнении программы отследить, где, на каком этапе происходит ее ненужное изменение.