Если в процессе выполнения макроса возникла ошибка, появляется диалоговое окно
Ошибка выполнения макроса
(Action Failed), аналогичное окну
Пошаговое исполнение макроса
(Macro Single Step), но без возможности продолжить процесс (кнопки
Шаг
(Step) и
Продолжить
(Continue) недоступны). Можно только прервать выполнение макроса, нажав кнопку
Прервать
(Halt). В окне отображается макрокоманда, содержащая ошибку.
Поиск ошибок в макросах, как правило, не вызывает больших затруднений. Это связано с тем, что:
Основные ошибки, которые возникают в макросах, связаны либо с неправильным вводом имен объектов, и тогда Access не может найти соответствующий объект, либо с тем, что объекты, на которые ссылается макрокоманда, недоступны, например форма не открыта. Поэтому при возникновении ошибки в первую очередь нужно проверить, правильно ли введены имена объектов и открыты ли формы, использованные в условиях или аргументах макрокоманд.
Совет
Прежде чем использовать ссылки на форму или элемент управления, рекомендуется выполнять проверку, открыта ли форма, с помощью функции isLoaded(). К сожалению, эта функция не является стандартной функцией Access, а обычно включается в модуль "Служебные функции" (Utility Function) базы данных "Борей". Вы можете скопировать ее оттуда в свою базу данных.
Стандартным приемом отладки как процедур, так и макросов, является вывод на экран специальных сообщений, говорящих о прохождении определенных этапов процесса. В макросах это осуществляется путем вставки дополнительных макрокоманд ВыводСообщения (MsgBox) для отображения таких сообщений. Причем в сообщении можно вывести значения свойств элементов управления, например: "Цена товара = " & Forms!Товары!Цена
Можно легко отключить вывод на экран отладочных сообщений, для чего введите в столбец "Условия" (Condition) напротив соответствующих макрокоманд значение Ложь.
Еще один стандартный прием — установка точек останова. Его применяют для того, чтобы остановить выполнение макроса в определенной точке до завершения процесса. Для этого используется макрокоманда ОстановитьМакрос (StopMacro). Макрос будет выполняться до макрокоманды ОстановитьМакрос (StopMacro), после этого можно проверить результаты. Таким образом, можно локализовать ошибку с точностью до макрокоманды.