Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
26
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Исправление ошибок

Пришло время исправить ошибку в процедуре Ошибка. Вы уже поняли, что метод InputBox при щелчке на кнопке Отмена возвращает значение False, а не пустую строку, как мы первоначально ошибочно предполагали. Код исправленной процедуры показан в листинге 12.1.

Листинг 12.1. Исправленная процедура Ошибка

1: Public Sub Ошибка()

2:  Dim response

3:

4:  response = Application.InputBox("Введите ваше имя")

5:  If response = False Then

6:   MsgBox "Процедура завершена"

7:   Exit Sub

8:  Else

9:   MsgBox "Ваше имя -" & response

10:  End If

11: End Sub

Протестируйте еще раз эту процедуру, чтобы убедиться в том, что она работает так, как задумано.

Резюме

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

Вопросы и ответы

Вопрос. Как можно выполнить только часть процедуры?

Ответ. Установите точки останова в те строки кода, начиная с которых вы хотите остановить или приостановить выполнение процедуры.

Вопрос. Почему лучше использовать наблюдаемые выражения вместо оператора Print в окне Immediate?

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

Практикум

С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.

Тесты

  1. Как называется режим, в который переходит процедура, достигнув точки останова?

  2. Как проследить за последовательностью выполняемых операторов?

  3. Как просмотреть значения переменных и свойств в окне Immediate?

  4. Какой еще, кроме установки точек останова, есть способ приостановить выполнение процедуры?

  5. Истинно или ложно следующее утверждение: в режиме останова вы не можете просмотреть значения переменных?

  6. Назовите два режима пошагового выполнения программ.

  7. Истинно или ложно следующее утверждение: наблюдаемые выражения никогда не воздействуют на ход выполнения процедуры?

Упражнение

Создайте следующую процедуру:

Sub ПримерЧас12()

 Dim sWhichState As String

 sWhichState = InputBox("Введите название штата, _

  куда доставляется груз")

 Select Case sWhichState

  Case "FL"

   MsgBox "Стоимость доставки 3.50"

  Case "NY"

   MsgBox "Стоимость доставки 5.00"

  Case "OH"

   MsgBox "Стоимость доставки 2.00"

  Case "CA"

   MsgBox "Стоимость доставки 6.00"

  Case Else

   MsgBox "В этот штат доставка не предусмотрена"

 End Select

End Sub

Выполните процедуру и введите Ny в окно ввода. Используйте средства отладки и тестирования, описанные в этом часе, чтобы найти и исправить ошибки в процедуре.

13-й час. Обработка ошибок

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

В этом часе будут рассмотрены следующие вопросы.

  • Что такое "обработка ошибок".

  • Установка ловушек для ошибок.

  • Написание процедур обработки ошибок.

  • Выходы из обработчика ошибок.

  • Создание централизованного обработчика ошибок.