Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

Желаете пример, господа? Извольте:

* * *

intДанныеCMapca = ПолучениеДанныхСМарса(1.5454)

Stop

MsgBox "Результат " & intДанныеCMapca /Z

* * *

Взглянув на этот пример, вы можете догадаться, что здесь оператор Stop используется для того, чтобы прозондировать подозрительные результаты, отображаемые в окне сообщения. Выполнение оператора Stop заставит перейти программу в режим паузы сразу после того, как процедура-функция ПолучениеДанныхСМарса присвоит свое значение переменной. Вы получите возможность проверить значения обеих переменных, используемых для вычислений в следующей за оператором Stop строке, чтобы выяснить, какая из переменных стала источником проблемы.

Когда вы достаточно насладитесь режимом паузы (по крайней мере на этот раз), дайте указание VBA продолжить нормальное выполнение программы. Для этого используются команды, находящиеся на тех же местах, что и команды для первоначального запуска программы. В режиме паузы соответствующие пункт меню Run (Выполнить) и кнопка панели инструментов со своих мест никуда не денутся, но изменят свои названия - они будут теперь называться Continue (Продолжить). По-прежнему клавишным эквивалентом для вызова соответствующей команды будет <F5>. Продолжая выполнение, программа может снова перейти в режим паузы, если доберется до следующей точки останова или возникнут иные условия, при которых активизируется режим паузы.

Чтобы совсем прекратить выполнение программы, используйте команду Reset

(Остановить выполнение). Для этого можно использовать кнопку Reset или пункт Reset меню

Run. Нажатие <A!t+F4> останавливает выполнение вообще любой программы в Windows, в том числе и VBA-программ. Но прежде чем нажать <Alt+F4>, убедитесь, что вы выполняете свою

VB А-программу, потому что в противном случае закроется либо редактор Visual Basic, либо ваше

VBA-приложение, либо какая-то другая программа Windows, оказавшаяся активной в тот момент.

Как и все хорошие отладчики, редактор Visual Basic дает возможность выполнять программу по шагам, по одному оператору за шаг. Такое замедление- просто находка для тех случаев, когда появляется подозрение на наличие логических ошибок, имеющих привычку прятаться в укромных местах программ.

Чтобы использовать все преимущества пошагового выполнения программы, желательно видеть, как в процессе выполнения программы изменяются значения переменных. В этом всегда готово помочь чудесное средство редактора Visual Basic, называемое Auto Data Tips (Автоматические подсказки значений), но еще более подробная информация предоставляется в окнах Locals (Окно локальных переменных) и Watches (Окно контролируемых выражений), которые к тому же позволяют при необходимости изменить значения представленных в них элементов. Все эти возможности будут обсуждаться ниже.

Начнем же, пожалуй, стрех команд Step редактора Visual Basic, а именно: Step Into.

Step Over и Step Out. Все три доступны либо через меню Debug, либо с помощью кнопок панели инструментов Debug, либо следующих комбинаций клавиш.

Step Into <F8>

Step Over <Shift+F8>

Step Out <Ctrl+Shift+F8>

Команда Step Into (Войти в процедуру) используется, если нужно выполнить процедуру по шагам в порядке естественного выполнения операторов. Каждый раз, когда применяется эта команда, VBA выполняет следующий оператор программы и снова переходит в режим паузы, чтобы вы имели возможность увидеть произошедшие при этом изменения. Удобнее всего вызывать команду Step Into нажатием клавиши <F8>.

Свое название эта команда получила из-за того, что при ее использовании происходит вход в любую из вызываемых в программе процедур: если следующим оператором оказывается вызов процедуры типа Sub или Function, то применение команды Step Into приведет к открытию вызванной процедуры в окне редактирования, чтобы вы могли пройти эту процедуру по шагам и увидеть все, что происходит.

Команда Step Into доступна не только в режиме паузы. Если нужно выполнить программу по шагам с самого начала, запустите ее с помощью команды

Step Into. В таком случае команда Step Into начинает выполнение с той процедуры, в которой оказывается текстовый курсор, причем процедура всегда выполняется с самой первой строки.

Команда Step Over (Обойти процедуру) вызывается клавишами <Shift+F8> и работает подобно команде Step Into, но со следующими двумя отличиями:

* при вызове процедуры команда Step Over не приводит к пошаговому выполнению вызываемой процедуры;

* с помощью команды Step Over нельзя начать выполнение программы в режиме паузы.

Если оператор, который должен выполняться следующим, вызывает некоторую процедуру, команда Step Over выполнит эту процедуру без перерывов, целиком, сделав сразу все имеющиеся в процедуре глупости и не дав вам проверить промежуточные результаты. Обход процедур очень экономит время, когда вы уверены, что вызываемая процедура работает так, как нужно.

Команда Step Out (Выйти из процедуры) вызывается клавишами <Ctrl+Shift+F8> и прекрасно дополняет команду Step Over. После входа в процедуру в режиме ее пошагового выполнения вы можете решить, что все в порядке или что ошибка найдена и исправлена.

Или, намереваясь щелкнуть на кнопке Step Over, вы можете случайно щелкнуть на кнопке Step Into лично у меня такое происходит регулярно).

В любом из таких случаев нет необходимости проходить по шагам оставшуюся часть процедуры. Чтобы пройти остаток с полной скоростью, используйте команду Step Out.

VBA быстро доставит вас в ту процедуру, из которой вы пришли, подсветив оператор, следующий за оператором с вызовом процедуры.

Основные приемы отладки

В режиме паузы поток выполнения программы не рассматривается как нечто "замороженное" только потому, что программа выполняется. VBA оказывается достаточно сообразительным, чтобы позволить вносить коррективы прямо по ходу дела. В частности, в режиме паузы можно редактировать программный код и изменять порядок, в котором должны выполняться операторы.

Добавление и редактирование программного кода в режиме паузы

Все возможности окна редактирования программного кода остаются в силе и в режиме паузы. Вы имеете возможность печатать новые операторы и редактировать или удалять уже имеющиеся. И главное, в большинстве своем эти изменения сработают незамедлительно, став частью выполняемой программы. Так, вы можете объявлять переменные, чтобы сразу же использовать их в вычислениях в комбинации с уже существующими переменными программы.

Поделиться:
Популярные книги

Интриганка

Шелдон Сидни
Приключения:
исторические приключения
9.24
рейтинг книги
Интриганка

Гром Раскатного. Том 2

Володин Григорий Григорьевич
2. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гром Раскатного. Том 2

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Вернувшийся: Первые шаги. Том II

Vector
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II

Девочка из прошлого

Тоцка Тала
3. Айдаровы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка из прошлого

Последний Герой. Том 4

Дамиров Рафаэль
Последний герой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Последний Герой. Том 4

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии

Иной. Том 5. Адская работа

Amazerak
5. Иной в голове
Фантастика:
боевая фантастика
городское фэнтези
технофэнтези
рпг
5.00
рейтинг книги
Иной. Том 5. Адская работа

Кровь на клинке

Трофимов Ерофей
3. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.40
рейтинг книги
Кровь на клинке

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!