- •1.Программирование в vba. Объекты Application, Workbook, Worksheet и Range
- •2.Редактор Visual Basic
- •2.1.Запуск программы
- •2.1.1.Панель инструментов Стандарт
- •2.2.Отладка программ
- •2.2.1.Ошибки при написании программ
- •2.2.1.1.Ошибки компиляции
- •2.2.1.2.Ошибки выполнения
- •2.2.2.Инструкция Option Explicit
- •2.2.3.Пошаговое выполнение программ
- •2.2.4.Точка останова (Toggle Breakpoint)
- •2.2.5.Отслеживание значений свойств и переменных
- •3.Объекты Application, Workbook, Worksheet и Range. Встроенные функции Dir, MkDir, MsgBox, InputBox
- •3.1.Программа СлучайныеЧисла
- •3.2.Программа УдалениеКниги
- •3.3.Программа СлучайныеЧислаОформление
- •4.Переменные
- •4.1.Объектные переменные
- •4.2.Пользовательский тип данных
- •5.Массивы
- •5.1.1.Функция Erase
- •5.1.2.Функции lBound и uBound
- •6.Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций.
- •6.1.Вызов подпрограммы
- •6.2.Передача данных при вызове программы
- •6.2.1.Передача по ссылке и по значению
- •6.3.Функции
- •6.4.Область видимости переменных
- •6.4.1.Переменные уровня процедуры
- •6.4.2.Переменные уровня модуля
- •6.4.3.Переменные уровня проекта
- •6.4.4.Сохраняемые переменные
- •6.4.5.Область видимости подпрограмм и функций
- •6.4.6.Сохраняемые подпрограммы и функции
- •7.Управляющие структуры: If-Then-Else, Select Case, For-Next, While-Wend, Do-Loop, For-Each-Next
- •8.Инструкция With
- •9.Встроенные функции vba
- •9.1.Математические функции
- •9.2.Функции проверки типов
- •9.3.Функции преобразования форматов
- •9.4.Функции обработки строк
- •9.5.Функции времени и даты
- •10.Обработка ошибок: инструкция On Error
- •11.Пользовательский интерфейс
- •11.1.Создание формы (UserForm) и добавление кнопок (СоmmandButton)
- •11.2.Вывод формы на экран (запуск формы)
- •11.3.Поле (TextBox) и надпись (Label).
- •11.4.Список (ListBox) и поле со списком (ComboBox)
- •11.4.1.Список (ListBox)
- •11.4.2.Определение выбранных элементов списка
- •11.4.3.Поле со списком (ComboBox)
- •11.4.4.Определение выбранного элемента
- •11.4.5.Создание взаимосвязанных элементов управления
- •11.5.Флажок (CheckBox)
- •11.6.Выключатель (ToggleButton)
- •11.7.Переключатель (OptionButton)
- •11.8.Счетчик (SpinButton)
- •11.9.Создание нестандартных меню и панелей инструментов.
- •11.9.1.Пример создания/удаления панели инструментов
- •11.9.2.Пример создания/удаления меню
- •12.События объектов Workbook и Worksheet
- •12.1.События объекта Workbook
- •12.2.События объекта Worksheet
- •Домашнее задание №1
- •Домашнее задание №2 и №3. Типовые варианты.
- •Вариант 1. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 2. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 3. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 4. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 5. Домашнее задание №2
- •Домашнее задание №3
9.4.Функции обработки строк
Рассмотрим действие этих функций на следующих примерах.
Функции смены регистра LCase/UCase:
Sub ФункцииLCase_UCase()
Dim MyString As String
MyString = InputBox("Введите Ваше имя:")
MsgBox "Ваше имя в нижнем регистре: " & LCase(MyString), _
vbInfomation, "Смена регистра"
MsgBox "Ваше имя в верхнем регистре: " & UCase(MyString), _
vbInfomation, "Смена регистра"
End Sub
Выделение подстроки:
Sub ФункцииLeftMidRight()
Dim MyString As String
MyString = "Марья Ивановна"
MsgBox "Марья Ивановна! Ваше имя: " & Left(MyString,5) & ", отчество: " & Right(MyString,8) & ", а отца звали " & _
Mid(MyString, 7, 4) & ".", vbInfomation, MyString
End Sub
Определение длины строки:
Sub ФункцииLen()
Dim MyString As String
MyString = InputBox("Введите Ваше имя:")
MsgBox "Ваше имя состоит из " & Len(MyString) & _
" символов.", vbInfomation, "Длина строки"
End Sub
Уничтожение пробелов. Следующую программу выполните в пошаговом режиме, предварительно открыв окно локальных переменных и наблюдая за их значениями:
Sub ФункцииTrim()
Dim MyString As String
Dim Имя As String
Имя = " Марья Ивановна "
MyString = LTrim(Имя)
MyString = RTrim(Имя)
MyString = Trim(Имя)
End Sub
Проверка наличия подстроки или поиск начала вхождения:
Sub ФункцияInStr()
Dim MyString As String
MyStringVal = InStr("Марья Ивановна", "Ивановна")
If MyStringVal > 0 Then
MsgBox "В строке Марья Ивановна имеется подстрока Ивановна, и она начинается с " & MyStringVal & _
"-ой позиции.", vbInfomation, "Марья Ивановна"
End If
End Sub
9.5.Функции времени и даты
Рассмотрим основные функции времени и даты.
Функция Date. Возвращает текущую системную дату:
Sub ФункцияДата()
Dim Дата As Date
Дата = Date()
MsgBox "Сегодня " & Дата, vbInfomation, "Дата"
End Sub
Функция Year. Возвращает год в значении даты:
Sub ФункцияГод()
Dim Год
Год = Year(Date)
MsgBox "Сейчас " & Год & "-й год. ", vbInfomation, "Год"
End Sub
Функция Month. Возвращает месяц в значении даты:
Sub ФункцияМесяц()
Dim Месяц
Месяц = Month(Date)
MsgBox "Сейчас " & Месяц & "-й месяц.", vbInfomation, _
"Месяц"
End Sub
Функция Day. Возвращает месяц в значении даты:
Sub ФункцияЧисло()
Dim Число
Число = Day(Date)
MsgBox "Сейчас " & Число & "-ое число.", vbInfomation, _
"Число"
End Sub
10.Обработка ошибок: инструкция On Error
В 9.2 мы говорили о предотвращении ошибок программными средствами. Помимо этого, ошибки можно перехватывать и обрабатывать с помощью инструкции On Error.
В Модуль8 наберите следующую программу и протестируйте её:
|
|
Sub ОбратноеЧислоError () |
|
|
Dim x As Double |
|
|
Dim y As Double |
|
|
Dim Число As String |
|
|
'Передача управления на обработчик ошибок, помеченный _ меткой Ошибка |
|
|
On Error GoTo Ошибка |
|
|
x = CDbl(InputBox("Введите число:")) |
|
|
y = 1 / x |
|
|
MsgBox "Обратное число:" & y |
|
|
Exit Sub |
|
|
'Обработчик ошибок |
|
|
Ошибка: |
|
|
MsgBox "Произошла ошибка: " & Cstr(Err.Number) & "-" & _ Err.Description, vbInformation, "Cообщение об ошибке" |
|
|
Select Case Err.Number |
|
|
Case 11 |
|
|
MsgBox "Деление на ноль запрещено!", vbExclamation, _ "Обратное число " |
|
|
Case 13 |
|
|
MsgBox "Некорректный ввод исходного значения!", _ vbExclamation, "Обратное число" |
|
|
Case Else |
|
|
MsgBox "Непредвиденная ошибка!", _ vbExclamation, "Обратное число" |
|
|
End Select |
|
|
End Sub |
Обратите внимание на 10-ю строку кода, которая обеспечивает выход из процедуры перед активизацией обработчика ошибок. В случае её отсутствия управление передается на следующую команду, т.е. будет выведено сообщение об ошибке, даже если её и нет.
Замечание:
Даже если вы предотвращаете ошибки программным способом, для перехвата непредвиденных ошибок вставляйте в программу инструкцию On Error. В ней вы можете выдать примерно такой же текст, как в 20-й строке или такой: «Программа выполнила недопустимую операцию и будет закрыта. При повторении ситуации обратитесь к разработчику!»
