Перейти к содержимому

VBA Excel. Функция InStr (синтаксис, параметры, примеры)

Определение первого вхождения одной строки в другую с помощью функции InStr из кода VBA Excel. Синтаксис функции, параметры, примеры использования.

  1. Описание функции InStr
  2. Синтаксис, параметры, значения
  3. Примеры использования в VBA Excel

Описание функции InStr

InStr – это функция, которая предназначена для определения номера позиции первого вхождения одной строки в другую. Она возвращает значение типа Variant (Long).

Функция InStr часто незаменима при определении параметров функций Left, Mid и Right. Также ее можно использовать для определения наличия искомой подстроки в заданной строке.

Еще есть в VBA Excel функция InStrB, которая работает с байтовыми данными, содержащимися в строке. Она возвращает позицию байта, а не символа первого вхождения одной строки в другую. Смотрите ниже Пример 3.

Синтаксис, параметры, значения

Синтаксис функции InStr

Полный вариант:
InStr([начало], строка1, строка2, [сравнение])

Сокращенный вариант:
InStr(строка1, строка2)

Чаще всего в VBA Excel используется сокращенный вариант функции со значениями необязательных параметров по умолчанию.

Параметры функции InStr

Параметр Описание Значение по умолчанию
начало Необязательный аргумент.* Числовое выражение, которое задает начальную позицию для поиска. 1
строка1 Обязательный аргумент. Строковое выражение, в котором выполняется поиск.
строка2 Обязательный аргумент. Искомое строковое выражение.
сравнение Необязательный аргумент. Задает тип сравнения строк. –1**

* Если задан аргумент сравнение, аргумент начало является обязательным.
** Если аргумент сравнение не указан, используется значение инструкции Option Compare, заданное на уровне модуля. Если инструкция Option Compare в начале модуля отсутствует, используется ее значение по умолчанию – 0 (двоичное сравнение).

Если параметр начало или параметр сравнение содержит значение NULL, возникает ошибка.

Значения аргумента «сравнение»

Константа Значение Описание
vbUseCompareOption -1 Сравнение с помощью параметра инструкции Option Compare.
vbBinaryCompare 0 Двоичное (бинарное) сравнение.*
vbTextCompare 1 Текстовое сравнение.*
vbDatabaseCompare 2 Сравнение на основе сведений из базы данных. Только для Microsoft Access.

* При двоичном сравнении учитывается регистр букв, при текстовом – не учитывается.

Значения функции InStr

Если Возвращаемое значение
строка2 найдена в строке1 Позиция первого найденного соответствия.
строка2 не найдена в строке1 0
строка2 является пустой Значение аргумента начало.
строка2 равна NULL NULL
строка1 является пустой 0
строка1 равна NULL NULL
начало > длины строка1 0

Примеры использования в VBA Excel

Пример 1

Самый простой пример:

Sub Test1()
Dim x As Variant
x = InStr("На горе Фернандо-По, где гуляет Гиппо-по", "Фернандо")
MsgBox x
'Здесь x будет равен 9
End Sub

Пример 2

В этом примере, используя одинаковые строки, в которых выполняется поиск, и искомые подстроки, применим разные виды сравнения – двоичное (бинарное) и текстовое, и посмотрим на результаты.

Sub Test2()
Dim x As Variant
x = InStr(10, "На горе Фернандо-По, где гуляет Гиппо-по", "по", 0)
MsgBox x
'Здесь x будет равен 36 (поиск с учетом регистра символов)
x = InStr(10, "На горе Фернандо-По, где гуляет Гиппо-по", "по", 1)
MsgBox x
'Здесь x будет равен 18 (поиск без учета регистра символов)
End Sub

Обратите внимание: несмотря на то, что начало поиска мы задали с 10 символа, номер позиции первого вхождения считается с начала строки, в которой выполняется поиск.

Пример 3

В этом примере посмотрим на результаты посимвольного и побайтового сравнения, опять же используя одинаковые строки и искомые подстроки.

Sub Test3()
Dim x As Variant
x = InStr("На горе Фернандо-По, где гуляет Гиппо-по", "гор")
MsgBox x
'Здесь x будет равен 4
x = InStrB("На горе Фернандо-По, где гуляет Гиппо-по", "гор")
MsgBox x
'Здесь x будет равен 7
End Sub

Результат 7 при побайтовом сравнении получен для кодировки, у которой один символ составляет 2 байта.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].