Исправление синтаксических ошибок
Если вы допустите синтаксическую ошибку, редактор Visual Basic сообщит вам об этом почти сразу же, не дожидаясь, когда вы дадите указание выполнить программу. Если вы напечатаете что-то такое, что редактор Visual Basic не поймет, символы в строке с непонятным программным кодом станут красными, а как только точка ввода перейдет из этой строки на другую, вы получите сообщение, подтверждающее наличие ошибки и с некоторым разъяснением ее (при условии, что на вкладке Editor (Редактор) диалогового окна Options (Параметры) отмечен флажок Auto Syntax Check (Автоматическая проверка синтаксиса); чтобы открыть это диалоговое окно, выберите Tools=Options из меню). Например, если вы напечатаете If х = 3 и забудете напечатать Then, появится сообщение Compile error : Expected: Then or GoTo (Ошибка компиляции: ожидалось Then или GoTo).
Некоторые синтаксические ошибки VBA не замечает до тех пор, пока программа не начнет выполняться. Например, VBA не будет поначалу возражать, если вы укажете в операторе GoTo ссылку на несуществующую метку или вызовете несуществующую процедуру- по этому поводу вы получите сообщение об ошибке компиляции уже после начала выполнения программы.
Когда известно, где допущена синтаксическая ошибка, исправить ее уже несложно. Если вы сомневаетесь в правильном написании имени, объявления или вызова процедуры или функции, имени переменной, оператора создания нового экземпляра объекта или использования управляющей структуры, обратитесь к соответствующим главам этой книги или подходящим разделам справки по VBA.
Энтомология для программистов
После того как вы выловите и уничтожите все ошибки компиляции, а ваша программа начнет выполняться, никто не осудит вас за внезапно нахлынувшее чувство гордости и удовлетворения. Но если программа вдруг сообщит, что 2 + 2 = 22, или если весь текст в документе окажется розовым, то знайте - где-то в программном коде все же затаилась ошибка.
Причиной подобных ошибок являются ошибки в логике программы. При выполнении программа всегда делает то, что ей приказали делать вы, - проблема заключается в том, что с помощью созданного вами программного кода вы заставши программу делать не то, что в действительности хотели заставить ее делать. Вы и должны отыскать те операторы, которые привели к неправильным действиям. Процесс отыскания ошибок называется отладкой, и в этом разделе обсуждаются все средства и приемы, которые помогут вам в вашей отладочной кампании.
Ясно, что приемы, которые используются для выявления и исправления логических ошибок, годятся и для предотвращения появления ошибок выполнения, вытекающих из логических. Но поскольку ни одна программа не в состоянии предвидеть абсолютно все возможные ситуации, в любой программе, предназначенной для использования другими людьми, необходимо предусмотреть программный код для обработки вероятных ошибок выполнения.
Хорошо, когда ошибки сами заявляют о себе, например, с помощью явно неправильных ответов, изменения цветов экрана на очень странные или появления сообщений об ошибках.
К сожалению, часто логические ошибки оказываются не такими "крикливыми", а многие ошибки выполнения вообще случаются только иногда, при определенном стечении обстоятельств.
Пожалуй, не стоит предполагать, что ваша программа будет работать правильно и надежно сразу же после того, как '"вылупится", гораздо лучше запланировать достаточно времени на ее тщательное тестирование в самых разных условиях.
Вот несколько советов по тестированию программ.
* Если программа предназначена для работы с разными типами документов, то и попробуйте ее в работе с разными типами документов. Попытайтесь работать с программой, когда в VBA-приложении открыто несколько документов и когда- ни одного.
* Посмотрите, как выполняется программа, когда окно документа находится в разных состояниях (развернуто, свернуто или восстановлено).
* Попробуйте выполнить программу, когда в окне документа выделены различные элементы или группы элементов.
* Если программа требует ввода информации от пользователя в специальном окне или в специальной форме, опробуйте все вероятные и невероятные типы ввода и посмотрите на результат. Например, если вводимое значение предполагается целым, попробуйте ввести значение с плавающей запятой, дату и строку символов, чтобы узнать, как отреагирует на это программа.
Читать дальше