- •Лабораторная работа №5. Процедуры-функции
- •Стандартные (встроенные) функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Сравнение и поиск строк. Функции StrComp, InStr
- •Выделение части строки. Функции Left, Right и Mid.
- •Функции, определённые пользователем
- •Форматирование Значений данных. Функция Format.
- •Упражнение 1
- •Упражнение 2
Сравнение и поиск строк. Функции StrComp, InStr
В VBA имеются две функции, позволяющие сравнивать строки: StrComp и InStr.
Формат функции StrComp:
StrComp (String1, String2 [, Compare])
где String1, String2 - любые два строковых выражения, которые необходимо сравнивать. Compare - необязательный аргумент, может быть любой из следующих предопределенных констант:
vbBinaryCompare - бинарное сравнение двух строк;
vbTextCompare - текстовое сравнение двух строк.
При бинарном сравнении коды символов упорядочены в соответствии с их двоичным значением, и коды строчных и прописных букв различаются при сравнении. При текстовом сравнении VBA прописные и строчные буквы не различает.
Если аргумент Compare опускается, то используется текущая установка инструкции Option Compare (см. лабораторную работу № 3 «Инструкции перехода»).
Функция StrComp возвращает следующее значение:
-1, если String1 меньше String2;
0, если String1 и String2 равны;
1, если String1 больше String2.
В процедуре Comp_Str для задания метода сравнения строковых данных используется параметр vbTextCompare, который устанавливает метод сравнения строковых данных Text.
Sub Comp_Str()
Dim R1 As String, R2 As String, R3 As String
R1 = StrComp("Строка1", "Строка2", vbTextCompare)
R2 = StrComp("Строка1", "Строка1", vbTextCompare)
R3 = StrComp("Строка2", "Строка1", vbTextCompare)
MsgBox "R1=" & R1 & " " & "R2=" & R2 & " " & "R3=" & R3
End Sub
Результат выполнения процедуры Comp_Str:
В первой инструкции присваивания текстовое выражение Строка1 меньше, чем Строка2, и поэтому значение R1=–1, во втором они равны (R2=0) и в третьем Строка2 больше, чем Строка1 (R3=1).
Функция InStr дает возможность определить, содержит ли одна строка другую строку.
Формат функции:
InStr([Start,] String1, String2 [, Compare])
String1, String2 – любые допустимые строковые выражения. Функция проверяет, содержится ли String1 в String2.
Start – необязательный аргумент, является численным выражением и указывает положение символа в String1, с которого должна начинаться проверка. Аргумент Start является обязательным, если указывается аргумент Compare.
Compare имеет тот же смысл, что и в функции StrComp.
Функция InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null (“Пусто”), то функция также возвращает Null.
Процедура In_Str показывает работу функции InStr.
Sub In_Str()
Dim R1 As String, R2 As String
R1 = "Строка ввода
R2 = "Ввод"
MsgBox "R2 входит в R1 с позиции " & InStr(1, R1, R2, _
vbTextCompare)
End Sub
Результат выполнения процедуры In_Str:
Выделение части строки. Функции Left, Right и Mid.
Задачу выделения части строки в VBA решают три функции: Left, Right и Mid.
Формат функции Left:
Left(String, Length)
String – любое допустимое строковое выражение;
Length – любое численное значение.
Функция возвращает копию строки String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается всё строковое выражение String.
Формат функции Right:
Right (String, Length)
String – любое допустимое строковое выражение;
Length – любое численное значение.
Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.
Формат функции Mid:
Mid(String, Start, [, Length])
String – любое допустимое строковое выражение;
Length, Start – любые численные значения.
Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.
Процедура SelectPart демонстрирует работу всех трёх функций.
Sub SelectPart()
Dim R1 As String, R2 As String, _
R3 As String, R4 As String
R4 = "Ваша оценка Отлично"
R1 = Left(R4, 4)
R2 = Mid(R4, 6, 6)
R3 = Right(R4, 7)
MsgBox "R4=" & R4 & Chr(13) & _
"R1=" & R1 & Chr(13) & _
"R2=" & R2 & Chr(13) & _
"R3=" & R3
End Sub
Результат выполнения процедуры SelectPart:
