- •3 Семестр
- •Оглавление
- •Язык программирования Visual Basic for Application Основные средства и возможности vba Основные элементы vba
- •Основы программирования на vba Типы данных
- •Описание переменных
- •Допустимые имена
- •Инструкция Def Тип
- •Массивы
- •Динамические массивы
- •Функции и процедуры для работы с массивами
- •Константы
- •Тип данных, определенный пользователем
- •Операции vba
- •Приоритеты операций
- •Встроенные функции vba
- •Математические функции
- •Функции проверки типов
- •Функции преобразования форматов
- •Функции обработки строк
- •Функции времени и даты
- •Функции выбора
- •Функции, возвращающие строки
- •Встроенные диалоговые окна
- •Инструкции vba
- •Оператор присвоения
- •Перенос строки
- •Комментарии
- •Расположение нескольких операторов на одной строке
- •Операторы перехода и выбора
- •Операторы повтора
- •Условная компиляция
- •Процедура
- •Переход в подпрограмму и возвращение из подпрограммы
- •Вызов процедуры
- •Рекурсивные процедуры
- •Область определения переменной
- •Время жизни переменной
- •Процедуры обработки ошибок и отладка программ Разработка процедур, предотвращающих появление ошибок
- •Перехват и обработка ошибок
- •Свойства объекта Err
- •Методы объекта Err
- •Отладка программ
- •Ошибки компиляции
- •Ошибки выполнения
- •Логические ошибки
- •Инструкция Option Explicit
- •Пошаговое выполнение программ
- •Точка останова
- •Вывод значений свойств и переменных
- •Работа с файлами Типы файлов в vba
- •Открытие и закрытие файла
- •Ввод данных в файл последовательного доступа
- •Вывод данных из файла последовательного доступа
- •Работа с файлом произвольного доступа
- •Наиболее употребляемые инструкции и функции при работе с файлами
- •Объект FileSearch
- •Элементы управления и пользовательская форма Элементы управления
- •Режим конструктора
- •Установка свойств элемента управления
- •Редактор кода
- •Пользовательская форма UserForm
- •Семейство Controls
- •Создание пользовательской формы
- •Общие свойства элементов управления
- •Соглашения об именах
- •Общие методы и события элементов управления
- •Объект DataObject
- •Надпись
- •Заполнение списка
- •Выбор нескольких элементов из списка
- •Поле со списком
- •Полоса прокрутки и счетчик
- •Переключатель
- •Флажок и выключатель
- •Ссылки на ячейки и диапазоны
- •Набор страниц
- •Набор вкладок
- •Дополнительные элементы управления
- •Последовательность выбора элементов управления
- •Инициализация и отображение диалогового окна
- •Закрытие диалогового окна
- •Отображение встроенных диалоговых окон
- •Открытие документа
- •Объект Application
- •Свойства объекта Application
- •Методы объекта Application
- •События объекта Application
- •Объект Workbook и семейство Workbooks
- •Свойства объекта Workbook и семейства Workbooks
- •Методы объекта Workbook и семейства Workbooks
- •События объекта Workbook и семейства Workbooks
- •Объект Worksheet и семейство Worksheets
- •Свойства объекта Worksheet и семейства Worksheets
- •Методы объекта Worksheet и семейства Worksheet
- •События объекта Worksheet
- •Объекты Range и Selection
- •Адресация ячеек
- •Задание групп строк и столбцов с помощью объекта Range
- •Связь объекта Range и свойства Cells
- •Свойства и методы объекта Range
- •Программирование панели инструментов
- •Объект CommandBar и семейство CommandBars
- •Семейство CommandBarControls и объект CommandBarControl
- •Пример создания панели инструментов пользователя
- •Пример создания строки меню пользователя
- •Создание пользовательской панели инструментов вручную
- •Удаление элемента управления из панели инструментов вручную
- •Удаление пользовательской панели инструментов вручную
- •Назначение вручную макроса кнопке
- •Изменение и создание вручную изображения на кнопке
- •Программирование средств для работы со справочной информацией
- •Структура помощника
- •Типы помощника
- •Свойства объекта Assistant
- •Объект Balloon
Свойства объекта Err
Number |
Возвращает код ошибки |
Source |
Имя текущего проекта VBA |
Description |
Возвращает строковое выражение, содержащее текст сообщения об ошибке |
HelpFile |
Полное имя (включает диск и путь) файла справки VBA |
HelpContext |
Контекстовый идентификатор файла справки VBA, соответствующий ошибке с кодом, указанным в свойстве Number |
LastDllError |
Содержит системный код ошибки для последнего вызова библиотеки динамической компоновки (DLL) |
Методы объекта Err
Clear |
Очищает все значения свойств объекта Err. Метод Clear используется для явной очистки значений свойств объекта Err после завершения обработки ошибки. Это необходимо, например, при отложенной обработке ошибки, которая задается инструкцией On Error Resume Next |
Raise |
Создает ошибку выполнения. Используется при моделировании ситуаций ошибки.
Синтаксис: Raise number, source, description, helpfile, helpcontext
Аргументы: - number — номер ошибки, т.е. целое число от 0 до 65535 - source — строковое выражение, определяющее имя объекта или приложения, в котором возникла ошибка - description — строковое выражение, содержащее описание ошибки - helpfile — полное имя (включая диск и путь) файла справки Microsoft Windows содержащего описание данной ошибки - helpcontext — контекстный идентификатор, определяющий соответствующий обрабатываемой ошибке раздел в файле, указанном в аргументе helpfile |
На конкретном примере покажем, как применяется объект Err при создании обработчика ошибок. В предыдущем разделе в процессе создания диалогового окна Деление и связанной с ним программы, на первый взгляд были предусмотрены все возможные ошибки. Но это только на первый взгляд. Введем, например, в поле Знаменатель значение le-40. Это число ничем не лучше или не хуже любого другого числа типа Single Тем не менее, вместо вывода результата произойдет аварийное прерывание выполнения программ мы с отображением сообщения об ошибке переполнения. Усовершенствуем программу с учетом возможности обработки подобной ошибки. В обработчике ошибок предусмотрим два отклика:
- Пользователь информируется программой в случае появления ошибки переполнения, знаменателю и числителю присваиваются 1 и с этими данными проводятся вычисления.
- При появлении ошибки, отличной от ошибки переполнения, выполнение программы прерывается с информированием пользователя об ошибке (рис 12.4).
Рис. 12.4. диалоговое окно с указанием типа ошибки
Private Sub CommandButton1_Click()
Dim Числитель, Знаменатель, Результат As Single
‘
‘ Передача управления на обработчик ошибок,
‘ помеченный меткой Обработка
‘
On Error GoTo Обработка
‘
‘ Проверка, является ли числитель числом
‘
If IsNumeric(TextBox1.Text) = False Then
MsgBox “Ошибка в числителе”,
vbInformation, “деление”
TextBox1.SetFocus
Exit Sub
End If
‘
‘ Проверка, является ли знаменатель числом
‘
If IsNumeric(TextBox2.Text) = False Then
MsgBox “Ошибка в знаменателе”,
vbInformation, “деление”
TextBox2.SetFocus
Exit Sub
End If
‘
‘ Проверка, не является ли знаменатель нулем
‘
If СDbl(TextBox2.Text) = 0 Then
MsgBox “Знаменатель не может быть нулем”,
vbInformation, “деление”
TextBox2.SetFocus
Exit Sub
End If
‘
Числитель = CDbl(TextBox1.Text)
Знаменатель = CDbl(TextBox2.Text)
Результат = Числитель / Делитель
TextBox3.Text = CStr(Результат)
‘
‘ Выход из процедуры в случае успешного нахождения результата
‘
Exit Sub
‘
‘ Обработчик ошибок
‘
Обработка:
Select Case Err.Number
‘
‘ Обработка ошибки переполнения
‘
Case Is = 6
MsgBox “Произошла ошибка переполнения”,
vbInformation, “Деление”
TextBox1.Text = 1
TextBox2.Text = 1
Знаменатель = 1
Числитель = 1
Resume
‘
‘ Обработка любой другой ошибки
‘
Case Else
MsgBox “Произошла ошибка: “ & Err.Description &
vbInformation, “Деление”
Exit Sub
End Select
End Sub
В заключение отметим, что в случае, если разрабатываемое приложение - стоит из нескольких процедур, причем в некоторых из них необходимо создать по обработчику ошибок, бывает более удобно для сокращения программы и для большей ясности структуры кода написать отдельную процедуру с обработчиком всех ошибок.