Возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.
Синтаксис
Instr ([начало, ]строка1, строка2[, сравнение] )
Функция InStr имеет следующие аргументы:
Аргумент |
Описание |
---|---|
начало |
Необязательный аргумент. Числовое выражение, которое задает начальное положение для каждого поиска. Если аргумент не задан, поиск начинается с первого символа. Если аргумент начало содержит значение NULL, возникает ошибка. Если задан аргумент сравнение, аргумент начало является обязательным. |
строка1 |
Обязательный аргумент. Представляет собой строковое выражение, в котором выполняется поиск. |
строка2 |
Обязательный аргумент. Искомое строковое выражение. |
сравнение |
Необязательный аргумент. Указывает тип сравнение строк. Если параметр compare имеет значение Null, возникает ошибка. Если параметр сравнение опущен, параметр OptionCompare определяет тип сравнения. Укажите допустимый LCID (LocaleID) для использования правил, относящихся к языковому стандарту, в сравнении. |
Совет: Построитель выражений имеет IntelliSense, поэтому вы можете видеть, какие аргументы требуются для выражения.
Параметры
Аргумент compare может принимать следующие значения.
Константа |
Значение |
Описание |
---|---|---|
vbUseCompareOption |
–1 |
Выполняется сравнение с помощью параметра инструкции Option Compare. |
vbBinaryCompare |
0 |
Выполняется двоичное сравнение. |
vbTextCompare |
1 |
Выполняется текстовое сравнение. |
Возвращаемые значения
Если |
Возвращаемое значение |
---|---|
строка1 является пустой |
0 |
строка1 равна NULL |
NULL |
строка2 является пустой |
начало |
строка2 равна NULL |
NULL |
строка2 не найдена |
0 |
строка2 найдена в строке1 |
Позиция найденного соответствия |
начало > строка2 |
0 |
Замечания
Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.
Примеры
Использование функции InStr в выражении. Функцию InStr можно использовать в любых выражениях. Например, если требуется определить позицию первой точки (.) в поле, которое содержит IP-адрес (IPAddress), можно использовать функцию InStr для его поиска:
InStr(1,[IPAddress],".")
Функция InStr проверяет каждое значение в поле IPAddress и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.
Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:
Left([IPAddress],(InStr(1,[IPAddress],".")-1))
В этом примере функция InStr(1,[IPAddress],".") возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left получает эти символы из левой части поля IPAddress, возвращая значение 10.
Использование функции InStr в коде VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA).
В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar) ' Returns 9.
MyPos = Instr(1, SearchString, "W") ' Returns 0.