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

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 по тематическим разделам со ссылками на все статьи.

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

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