- •Шеверева е.А. Лекция № 5 по дисциплине 5422 «Средства разработки офисных приложений»
- •План лекции:
- •Текст лекции
- •1 Основные принципы оптимизации кода
- •1.1 Оптимизация кода для Microsoft Excel
- •1.2 Оптимизация кода для Microsoft Word
- •2.1 Создание обработчика ошибок
- •2.2 Иерархия обработчиков ошибок
- •2.3 Тестирование обработчика за счет эмуляции ошибок
- •2.4 Строчная обработка ошибок
- •2.5 Отключение обработки ошибок
- •2.6 Общие принципы отладки
- •2.7 Режимы конструктора, выполнения и прерывания
- •2.8 Окна отладки
- •2. 9 Просмотр стека вызовов
1.1 Оптимизация кода для Microsoft Excel
Для оптимизации кода макросов, рассчитанных на Microsoft Excel, можно использовать и дополнительные приемы. Функции рабочего листа, оперирующие над диапазонами ячеек, обычно работают быстрее, чем макросы на Visual Basic, делающие то же самое. Функции, выдающие агрегированные результаты (PRODUCT, COUNT, COUNTA или COUNTIF), а также функции рабочего листа (MATCH или LOOKUP), принимающие в качестве аргумента диапазон ячеек, - лучшие кандидаты для замены медленного кода на Visual Basic.
В Visual Basic есть несколько методов специального назначения (Replace, Find и FindNext), позволяющих ускорить специфические операции над диапазонами ячеек. Как и функции рабочего листа, они быстрее универсальных методов Visual Basic, выполняющих те же операции.
1.2 Оптимизация кода для Microsoft Word
Для оптимизации кода макросов, рассчитанных на Microsoft Word, можно использовать и дополнительные приемы.
Операции над объектом Range выполняются быстрее, чем над объектом Selection. Можно определить и задействовать множество объектов Range, невидимых пользователю.
По возможности, лучше всегда получать следующий или предыдущий элемент набора только методами Next и Previous.
Методами объекта WordBasic работают медленнее, чем методы других объектов Visual Basic.
Оператор With очень эффективен для установки нескольких свойств одного объекта. Другой способ установки множества свойств – присвоить нужные значения свойствам встроенного диалогового окна и запустить его. Встроенное диалоговое окно срабатывает быстрее, чем оператор With, так как оно позволяет присвоить нужные значения сразу всем свойствам (используя метод Execute), а оператор With делает то же самое поочередно.
2-й учебный вопрос: Отладка и обработка ошибок
Когда возникает ошибка, Visual Basic устанавливает ряд свойств объекта Err – код ошибки, ее описание и т.п. Можно задействовать этот объект и его свойства в подпрограмме обработки ошибок, с тем, чтобы приложение «разумно» реагировало на их появление.
2.1 Создание обработчика ошибок
Обработчик ошибок (error handler) – подпрограмма, предназначенная для перехватки ошибок и их обработки. Такие обработчики целесообразно добавлять к любой процедуре, где существует вероятность ошибки. Создание обработчика ошибок состоит из трех этапов:
1) включить перехват ошибок, указав в программе, в какую точку кода следует перейти при возникновении ошибки. Оператор On Error включает перехват ошибок и указывает метку строки, с которой начинается подпрограмма обработки ошибок;
2) написать подпрограмму обработки ошибок, реагирующую на все ошибки, которые можно предвидеть. Когда управление передается этой подпрограмме, считается, что обработчик ошибок стал активен;
3) предусмотреть выход из подпрограммы обработки ошибок (таблица 2.1).
Таблица 2.1 - Способы выхода из подпрограммы обработки ошибок
Оператор |
Описание |
Resume[0] |
Выполнение программы продолжается с инструкции, которая привела к ошибке. Данная инструкция используется для повторения операции после исправления ситуации, вызвавшей ошибку |
Resume Next |
Если ошибка возникла в процедуре, в которой находится обработчик, выполнение возобновляется с инструкции, следующей за той, что вызвала ошибку. Если ошибка возникла вне процедуры, в которой находится обработчик, выполнение возобновляется с инструкции, расположенной за вызовом внешней процедуры, вызвавшей ошибку (но только при отсутствии в той своего обработчика ошибок) |
Resume метка |
Выполнение программы продолжается с указанной метки в процедуре, содержащей данный обработчик ошибок |
Err.Raise Number := номер |
Эмулирует ошибку периода выполнения. Когда этот оператор выполняется в подпрограмме обработки ошибок, Visual Basic обращается к списку вызовов и пытается найти другой обработчик ошибок. Список вызовов – последовательность вызванных процедур, которая привела в данную точку потока управления |