При написании программ пользователь независимо от его опыта допускает те или иные ошибки. Кто-то из мудрых совершенно верно подметил, что только тот, кто ничего не делает, не совершает ошибок. Позвольте перефразировать эту жизненную мудрость для изучаемого в данной книге предмета следующим образом: в программах не делал ошибок только тот, кто никогда не писал их. Итак, ошибки — это объективная неизбежность или реальное воплощение этой неизбежности. Какие же бывают ошибки и как с ними бороться? Условно ошибки можно поделить на три типа: ошибки компиляции, выполнения и логические ошибки.
Ошибки компиляции возникают, если VBA не может интерпретировать введенный код. Например, при некорректном вводе числа скобок, неправильном имени, неполном вводе инструкции и т. д. Некоторые из этих ошибок обнаруживаются УВА при завершении набора строки с инструкцией в редакторе кода и после нажатия клавиши <Enter>. Строка, в которой содержится ошибка, выделяется красным цветом, и на экране отображается диалоговое окно с сообщением о возможной причине, вызвавшей ошибку (рис. 12.5).
Рис. 12.5. Сообщение об ошибки компиляции, обнаруженной при вводе инструкции
Рис. 12.6. Сообщение об ошибке компиляции в диалоговом окне Microsoft Visual Basic
Другие ошибки компиляции обнаруживаются перед выполнением программы. Отметим, что VBA каждый раз автоматически компилирует программу при ее запуске на выполнение. В VBA предусмотрена также возможность компилировать программу без запуска на выполнение посредством команды Отладка, Компилировать (Debug, Compile). В этом случае предполагаемое местоположение ошибки выделяется синим цветом и на экране отображается диалоговое окно Microsoft Visual Basic с сообщением о возможной при чине, вызвавшей ошибку (рис. 12.6).
Ошибки выполнения возникают после успешной компиляции программы при ее выполнении. Причинами таких ошибок могут быть, например:
1. Некорректная информация при считывании файла с диска.
2. Некорректные данные, введенные пользователем, например требуется число, а пользователь вводит строковую информацию.
3. Некорректность вычислений, например деление на ноль.
В этих и подобных случаях на экране отображается диалоговое окно Microsoft Visual Basic с сообщением о номере ошибки и возможной причине, ее вызвавшей (рис. 12.7).
Рис. 12.7. Сообщение об ошибке выполнения в диалоговом окне Microsoft Visual Basic
Если в диалоговом окне Microsoft Visual Basic нажать кнопку Отладка (Debug), то в строке модуля желтым цветом будет выделена строка, вызвавшая ошибку и по причине которой выполнение программы было прервано. Кроме того, эта строка будет помечена стрелочкой. При прерывании выполнения программы VBA переходит в режим прерывания. Одной из наиболее удобных возможностей режима прерывания являются возможность узнать текущее значение переменных и свойств. Для этого достаточно расположить указатель мыши на имени свойства или переменной. Это вы зовет появление всплывающей подсказки с текущим значением переменной или свойства. Из текста кода, изображенного на рисунке, видно, что значение переменной y равно 0, что и вызвало ошибку прерывания. Для задания режима вывода всплывающей подсказки с текущими значениями данных должен быть установлен флажок Подсказки значений данных (Auto Data Tips) диалогового окна Параметры (Options), вызываемого с помощью команды Сервис, Параметры (Tools, Options).