Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA-Laboratorny_praktikum.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4.56 Mб
Скачать

2.2.1.2.Ошибки выполнения

Возникают после успешной компиляции программы при её выполнении. Причинами таких ошибок могут быть:

  • несоответствие типов данных,

  • некорректность вычислений, например, деление на ноль или вычисление квадратного корня из отрицательного числа,

  • некорректность операций с файлами, например, удаление открытой рабочей книги, сохранение рабочей книги с именем открытого файла и т.д.

С ошибкой выполнения познакомимся на следующем примере. Для этого в Модуле2 наберите программу Обратное_число:

Sub ОбратноеЧисло()

Dim x As Double

Dim y As Double

x = CDbl(InputBox("Введите число:"))

y = 1/x

MsgBox "Обратное число:" & y

End Sub

и запустите её на выполнение (попутно обратите внимание на встроенную функцию InputBox). На экране появится диалоговое окно с запросом, – введите в него 0 и щелкните по кнопке ОК. Так как деление на ноль запрещено, VB отобразит окно с сообщением о номере ошибки и причине, её вызвавшей (Рис. 2 -7):

Рис. 2‑7. Ошибка выполнения: деление на ноль

Если щелкнуть по кнопке Debug (Отладка), то строка, в которой произошла ошибка, будет выделена желтым цветом и программа перейдет в режим прерывания. При наведении мышиного курсора на переменную х на экране появится всплывающая подсказка с текущим значением (Рис. 2 -8).

Щелкнув по кнопке Сброс на панели инструментов Стандарт (Рис. 2 -3), завершите выполнение программы.

Рис. 2‑8. Программа Обратное_число в режиме прерывания

Другим примером ошибки выполнения может служить программа УзнатьАвтора. Скопируйте её в книгу Мои программы.xls (в Модуль2), а книгу Мои таблицы.xls закройте. Теперь, при запуске этой программы, возникнет ошибка с кодом 9 – Индекс выходит за пределы допустимого диапазона (Рис. 2 -9). Эта ошибка возникает тогда, когда программа ссылается на несуществующий объект3.

Рис. 2‑9. Ссылка на несуществующий объект Workbooks("Мои таблицы.xls")

Следующая программа работает корректно вне зависимости от того, открыта книга Мои таблицы.xls или нет:

Sub СсылкаНаКнигуПоИндексу()

'1. Объявляем переменные:

Dim Автор As String

Dim КолОткрытыхКниг As Integer

'2. Определяем количество открытых книг:

КолОткрытыхКниг = Workbooks.Count

'3. Ищем среди открытых книг книгу с именем Мои таблицы.xls:

For i = 1 To КолОткрытыхКниг

If Workbooks(i).Name = "Мои таблицы.xls" Then

Автор = Workbooks(i).Author

MsgBox "Автор этой книги: " & Автор

Exit Sub

End If

Next i

MsgBox "Книга Мои таблицы.xls среди открытых книг не найдена!"

End Sub

Задания:

  1. В Модуле 2 введите программу СсылкаНаКнигуПоИндексу.

  2. Протестируйте работу этой программы, когда книга Мои таблицы.xls открыта/закрыта.

2.2.2.Инструкция Option Explicit

Простейшим средством предотвращения случайных ошибок является использование инструкции Option Explicit, которая предписывает объявлять все переменные, встречающиеся в программе. Использование этой инструкции позволяет избежать такой трудно отслеживаемой ошибки как использование разных алфавитов при именовании одной и той же переменной. Например, в одном месте программы вы набрали имя переменной СуммаБаллов буквами русского алфавита, а в другом первую букву этой переменной случайно сделали латинской. Визуально между ними нет никакой разницы. Однако программа воспринимает их как названия разных переменных. Понятно, что результаты такой ошибки могут быть очень серьёзными. При использовании же инструкции Option Explicit такая ошибка была бы обнаружена сразу – компилятор указал бы на переменную СуммаБаллов с латинской буквой «с» как на необъявленную.

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