«VBA Понятие макроса, создание, отладка, использование среды для отладки программ»
Макрос — процедура на внутреннем языке приложения, в которой записаны действия пользователя приложения. В программах Word, Excel и PowerPoint макрос записывается на VBA. В Access макросы создаются с помощью собственного языка макросов, а не записываются автоматически, и к тому же не являются процедурами VBA.
5.2 Создание
Прежде чем записать макрос, требуется продумать свои действия, то есть составить алгоритм. Особое внимание следует уделить таким положениям:
Какие условия должны выполняться при запуске макроса (какой файл должен быть открыт, где должен находиться курсор, в каком режиме должно работать приложение).
Вновь созданный макрос содержится в документе, который был активным при запуске макроса. При записи документа на диск макрос сохраняется вместе с проектом.
5.3 Отладка, использование среды для отладки программ
Поскольку идеальных программистов не существует, в большинстве систем разработки программ имеются инструменты, с помощью которых можно решить проблемы, возникающие в процессе программирования. В VBA также есть средства, которые позволяют либо исключить ошибки при разработке, либо задать обработку ошибок при выполнении программ.
Отладка программ — это проверка и внесение исправлений в программу при ее разработке. Отладка позволяет идентифицировать ошибки, допущенные при программировании (синтаксические — ошибки в выражениях и именах, и логические — в логике работы программы).
Обработка ошибок — это задание реакции на ошибки, которые возникают при выполнении программы. Их причиной могут быть как ошибки программиста, так и внешние факторы — отсутствие нужных файлов, отказы аппаратуры, неправильные действия пользователя.
Ошибки компиляции — возникают, когда компилятор не может интерпретировать введенный текст. Некоторые ошибки компиляции обнаруживаются при вводе, а другие — перед выполнением программы. Такие ошибки легко определить и исправить, поскольку VBA выявляет их автоматически, а сами ошибки очевидны.
Примечание. VBA автоматически компилирует программу каждый раз при запуске на выполнение после внесения изменений. Можно также запустить компиляцию командой Отладка\Компилировать.
Логические ошибки трудно заметить и устранить. Они не приводят к прекращению компиляции или выполнения, однако являются причиной того, что программа не выдает желаемых результатов. Выявление таких ошибок производят путем тщательной проверки с помощью средств отладки VBA.
Средства отладки. В VBA имеется большое количество средств, предназначенных для отладки программ. К ним относятся: использование оператора Option Explicit, пошаговое выполнение программы, работа в режиме прерывания, использование точек останова, вывод значений переменных.
Пошаговое выполнение программы. Этот режим служит для локализации ошибок в теле программы. Для его запуска используются команды меню, клавиатура или панель инструментов Отладка, отображаемая командой Вид\Панели инструментов\Отладка. В меню и на панели инструментов имеются четыре команды (кнопки) для выполнения программы в пошаговом режиме.
Команда Отладка\Шаг с заходом (клавиша F8) позволяет выполнить одну строку программы и перейти к следующей. Если следующая строка — вызов процедуры, то происходит переход к первому выполняемому оператору этой процедуры.
Команда Отладка\Шаг с обходом (клавиши Shift+F8) также выполняет одну строку программы, но если строкой является вызов процедуры, то она выполняется как одна инструкция. Данная команда используется, если известно, что эта процедура работает правильно.
Команда Отладка\Шаг с выходом (клавиши Ctrl+Shift+F8) заканчивает выполнение текущей процедуры и останавливается на следующей после вызова текущей процедуры инструкции в вызывающей подпрограмме.
Команда Отладка\Выполнить до текущей позиции (клавиши Ctrl+F8) выполняет программу от текущей до выбранной инструкции. Перед выбором данной команды требуется установить курсор в окне модуля на требуемую позицию.
При прерывании работы программы нажатием клавиш Ctrl+Break. Текущая строка программы выделяется в окне модуля.
[expert_bq id=»1570″]Сразу после объявления функции GetCalories_v1 идёт оператор on error resume next , который в случае возникновения в каком-либо месте ошибки, предписывает VBA просто передавать управление на следующий оператор, идущий после ошибочного. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] А вот теперь тонкий момент, который не все понимают. Почему я использовал промежуточные переменные intRow и varTemp ? Вроде бы есть очевидный ответ — чтобы не вычислять значение выражений с Match и Cells 2 раза. Отчасти это, конечно, так. Но это, в данном случае, не главная причина. Главная причина в том, что такой кодСнятие ограничений (безопасность макросов) | Макросы Excel
Смысл автономного подхода в том, чтобы не выносить сор из избы. Если в подпрограмме возникла ошибка, то мы должны предположить, на каком месте она возникнет и поджидать её там с дубиной. С ошибкой, в этом случае, разбираются обычно в операторе, идущем сразу после потенциально опасного места. Давайте смотреть, как это может выглядеть: