Встроенные функции 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

Наши рекомендации