Функции преобразования форматов

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

Полный перечень функций преобразования типов вы найдете в справочной системе, здесь же рассмотрим некоторые из них:

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-й строке или такой: «Программа выполнила недопустимую операцию и будет закрыта. При повторении ситуации обратитесь к разработчику!»