Функции преобразования форматов
Позволяют конвертировать один тип данных в другой. Это актуально, когда наблюдается несоответствие типов между используемым и требуемым значениями, например, аргументом встроенной функции должно быть число, а передаваемое в неё значение является строкой и т.д.
Полный перечень функций преобразования типов вы найдете в справочной системе, здесь же рассмотрим некоторые из них:
1.
Sub ФункцияCInt()
'Переводит число в целочисленный формат:
Dim MyDouble, MyInt
MyDouble = 2345.5678
MyInt = CInt(MyDouble)
MsgBox "Число " & MyDouble & _
" в целочисленном формате запишется как " & MyInt, _
vbInfomation, "Целочисленный формат"
End Sub
2. Следующие две программы выполните в пошаговом режиме, предварительно открыв окно локальных переменных и наблюдая за их значениями:
Sub ФункцииStr_CStr()
Dim MyString1 As String
Dim MyString2 As String
MyString1 = Str(459)
MyString2 = CStr(459)
MyString1 = Str(-459.65)
MyString2 = CStr(-459.65)
MyString1 = Str(459.001)
MyString2 = CStr(459.001)
End Sub
Sub ФункцияVal()
Dim MyValue
MyValue = Val("2345")
MyValue = Val(" 2 34 5")
MyValue = Val("23 and 45")
End Sub
Функции обработки строк
Рассмотрим действие этих функций на следующих примерах.
1. Функции смены регистра LCase/UCase:
Sub ФункцииLCase_UCase()
Dim MyString As String
MyString = InputBox("Введите Ваше имя:")
MsgBox "Ваше имя в нижнем регистре: " & LCase(MyString), _
vbInfomation, "Смена регистра"
MsgBox "Ваше имя в верхнем регистре: " & UCase(MyString), _
vbInfomation, "Смена регистра"
End Sub
2. Выделение подстроки:
Sub ФункцииLeftMidRight()
Dim MyString As String
MyString = "Марья Ивановна"
MsgBox "Марья Ивановна! Ваше имя: " & Left(MyString,5) & ", отчество: " & Right(MyString,8) & ", а отца звали " & _
Mid(MyString, 7, 4) & ".", vbInfomation, MyString
End Sub
3. Определение длины строки:
Sub ФункцииLen()
Dim MyString As String
MyString = InputBox("Введите Ваше имя:")
MsgBox "Ваше имя состоит из " & Len(MyString) & _
" символов.", vbInfomation, "Длина строки"
End Sub
4. Уничтожение пробелов. Следующую программу выполните в пошаговом режиме, предварительно открыв окно локальных переменных и наблюдая за их значениями:
Sub ФункцииTrim()
Dim MyString As String
Dim Имя As String
Имя = " Марья Ивановна "
MyString = LTrim(Имя)
MyString = RTrim(Имя)
MyString = Trim(Имя)
End Sub
5. Проверка наличия подстроки или поиск начала вхождения:
Sub ФункцияInStr()
Dim MyString As String
MyStringVal = InStr("Марья Ивановна", "Ивановна")
If MyStringVal > 0 Then
MsgBox "В строке Марья Ивановна имеется подстрока Ивановна, и она начинается с " & MyStringVal & _
"-ой позиции.", vbInfomation, "Марья Ивановна"
End If
End Sub
Функции времени и даты
Рассмотрим основные функции времени и даты.
1. Функция Date. Возвращает текущую системную дату:
Sub ФункцияДата()
Dim Дата As Date
Дата = Date()
MsgBox "Сегодня " & Дата, vbInfomation, "Дата"
End Sub
2. Функция Year. Возвращает год в значении даты:
Sub ФункцияГод()
Dim Год
Год = Year(Date)
MsgBox "Сейчас " & Год & "-й год. ", vbInfomation, "Год"
End Sub
3. Функция Month. Возвращает месяц в значении даты:
Sub ФункцияМесяц()
Dim Месяц
Месяц = Month(Date)
MsgBox "Сейчас " & Месяц & "-й месяц.", vbInfomation, _
"Месяц"
End Sub
4. Функция Day. Возвращает месяц в значении даты:
Sub ФункцияЧисло()
Dim Число
Число = Day(Date)
MsgBox "Сейчас " & Число & "-ое число.", vbInfomation, _
"Число"
End Sub
9. Обработка ошибок: инструкция On Error
В 8.2 мы говорили о предотвращении ошибок программными средствами. Помимо этого, ошибки можно перехватывать и обрабатывать с помощью инструкции On Error.
В Модуль8 наберите следующую программу и протестируйте её:
1) | Sub ОбратноеЧислоError () |
2) | Dim x As Double |
3) | Dim y As Double |
4) | Dim Число As String |
5) | 'Передача управления на обработчик ошибок, помеченный _ меткой Ошибка |
6) | On Error GoTo Ошибка |
7) | x = CDbl(InputBox("Введите число:")) |
8) | y = 1 / x |
9) | MsgBox "Обратное число:" & y |
10) | Exit Sub |
11) | 'Обработчик ошибок |
12) | Ошибка: |
13) | MsgBox "Произошла ошибка: " & Cstr(Err.Number) & "-" & _ Err.Description, vbInformation, "Cообщение об ошибке" |
14) | Select Case Err.Number |
15) | Case 11 |
16) | MsgBox "Деление на ноль запрещено!", vbExclamation, _ "Обратное число " |
17) | Case 13 |
18) | MsgBox "Некорректный ввод исходного значения!", _ vbExclamation, "Обратное число" |
19) | Case Else |
20) | MsgBox "Непредвиденная ошибка!", _ vbExclamation, "Обратное число" |
21) | End Select |
22) | End Sub |
Обратите внимание на 10-ю строку кода, которая обеспечивает выход из процедуры перед активизацией обработчика ошибок. В случае её отсутствия управление передается на следующую команду, т.е. будет выведено сообщение об ошибке, даже если её и нет.
Замечание:
Даже если вы предотвращаете ошибки программным способом, для перехвата непредвиденных ошибок вставляйте в программу инструкцию On Error. В ней вы можете выдать примерно такой же текст, как в 20-й строке или такой: «Программа выполнила недопустимую операцию и будет закрыта. При повторении ситуации обратитесь к разработчику!»