Некоторые подходы по нахождению ошибок и их исправлению приведены ниже.
Конечная цель при выполнении макроса - это получение требуемого для нас отчета. Если отчет выполнился с другим результатом, чем ожидалось, это ошибка. Ошибки могут быть явными - выдается какое-либо предупреждение, и неявными - сообщений нет, но требуемый результат не достигнут. Возможные ситуации, которые сопровождают ошибки, приведены ниже.
Отчет выполняется не с ожидаемым результатом. При этом в окне системных сообщений Business Studio (см. Руководство пользователя → Главное окно) выдается текст вида:
17.07.2013 9:07:18 Ошибка при выполнении макроса ПослеВыполненияОтчета: Адресат
Причина: причины могут быть различные. Например, попытка обработки текстовых переменных арифметическими операциями.
Решение: запустить отчет на выполнение в режиме отладки кода (см. Отладка кода).
При просмотре выполненного отчета видим, что необходимый результат не достигнут. При этом не было никаких сообщений об ошибке.
Причина: ошибка в логике кода, не указаны полностью все необходимые действия в коде, ошибочные вводные параметры.
Решение: запустить отчет на выполнение в режиме отладки кода (см. Отладка кода).
Никаких сообщений не выводится и выполнение одного отчета длится очень долго. "Очень долго" - от нескольких минут и более. Если обработка не связана с очень большим объёмом данных, то, возможно, получился бесконечный цикл, из которого макрос не может выйти.
Причина: Разработчик кода макроса допустил логическую ошибку, задав неверные условия в циклических операциях.
Решение: завершить выполнение MS Word (MS Excel) через Диспетчер задач Windows (Ctrl+Alt+Del). Возможно, для работы над отчетом потребуется перегрузить Windows.
Далее отчет следует запускать на выполнение при отладке макроса (см. Отладка кода).
Вариантов и причин ошибок может быть множество. Как правило, характер ошибки понятен из выводимого сообщения. И для исправления ошибок необходимо использовать отладку кода.
Если путем логических размышлений о причине ошибки исправить её не получается, необходимо детально рассмотреть выполнение макроса и отладить код. Отладка кода подразумевает определение конкретного проблемного места в коде, который приводит к ошибке, и его исправление для получения желаемого результата.
Для того чтобы "залезть в отладку" и пошагово пройтись по выполнению макроса, необходимо первыми строками макроса написать следующие:
'Для отладки ладки Dim DebugVar As Variant Set DebugVar = 0 'к
При выполнении макроса будет выдано сообщение об ошибке на фоне еще одного окна среды VBA. К этой ошибке привел вышеуказанный код.
Далее необходимо:
Внимание! Окно среды VBA, вызванное в ходе перехода к отладке, является окном для отладки конкретного вызываемого отчета и не относится к шаблону отчета Business Studio. Изменения кода в таком окне не будут сохранены в макросе шаблона разрабатываемого отчета. Поэтому окно VBA для отладки лучше использовать для понимания выполнения текущего кода. Изменения же кода необходимо делать в основном окне VBA разрабатываемого отчета.
В ходе отладки макроса необходимо видеть значения некоторых переменных. Возможные пути их получения приведены ниже.
Значения переменных в окне Watches
Значения необходимых переменных можно получить в ходе отладки в среде VBA: меню Debug – Add Watch…
Дополнительно:
Значения переменных в сообщениях
Значения необходимых переменных также можно получить путем их вывода в отдельных сообщениях в ходе выполнения макроса. Что и когда выводить, определяется непосредственно в коде макроса.
Например, вывести какое-то сообщение можно так:
MsgBox "Текст сообщения"
Значение переменной типа "Текст" можно вывести так:
txtVar = "Какое-то значение переменной"е переменной"
MsgBox "З
Значение числовой переменной можно вывести так:
digitalVar = 10
MsgBox "Значение digitalVar = "lVar = " & Str(dig
Сообщение в разных строках можно вывести так:
MsgBox "Текст первой строки"й строки"Текст второй строки"