Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lector5(Stud).doc
Скачиваний:
3
Добавлен:
02.05.2019
Размер:
181.25 Кб
Скачать

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 обращается к списку вызовов и пытается найти другой обработчик ошибок. Список вызовов – последовательность вызванных процедур, которая привела в данную точку потока управления

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]