Встроенные функции VBA
Как вы знаете, в VBA имеется большой набор встроенных функций, которые раздвигают горизонты решаемых задач, делают возможным разработку приложений для любых сфер деятельности.
В Модуль7 наберите следующие программы и протестируйте их.
Математические функции
1. Пример использования функции Sin:
Sub ФункцияSin()
Dim Num1
Dim Num2
Num1 = Число
Num2 = Sin(Num1)
MsgBox "Sin ( " & Num1 & " ) = " & Num2, "Синус числа"
End Sub
Function Число()
Число = InputBox("Введите число:", "Синус числа")
End Function
Функции проверки типов
Незаменимую роль в выявлении и перехвате ошибок играют функции проверки типов. Например, в предыдущем примере, если пользователь забудет ввести число, или щелкнет по кнопке Cancel или вместо числа введет символьную строку, возникнет аварийный останов.
Первые две ситуации (ввод пустого значения) можно «отловить», воспользовавшись функцией IsEmpty, которая проверяет, является ли переменная пустой или ей присвоено значение:
If IsEmpty(Num1) = False Then Exit Sub[10]
Для выявления символьной строки воспользуемся функцией IsNumeric. С внесенными изменениями программа ФункцияSin примет вид:
Sub ФункцияSin()
Dim Num1
Dim Num2
Num1 = Число
If IsEmpty(Num1) = False Then Exit Sub
If IsNumeric(Num1) = False Then
MsgBox "Некорректный ввод исходного значения!", _
vbExclamation, "Синус числа"
Exit Sub
End If
Num2 = Sin(Num1)
MsgBox "Sin ( " & Num1 & " ) = " & Num2
End Sub
Задание:
1. Модифицируйте программу ОбратноеЧисло таким образом, чтобы она работала корректно (т.е. были исключены ошибки выполнения: деление на ноль, ввод пустого значения или символьной строки).
Функции преобразования форматов
Позволяют конвертировать один тип данных в другой. Это актуально, когда наблюдается несоответствие типов между используемым и требуемым значениями, например, аргументом встроенной функции должно быть число, а передаваемое в неё значение является строкой и т.д.
Полный перечень функций преобразования типов вы найдете в справочной системе, здесь же рассмотрим некоторые из них:
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