Как определить позицию появления одной строки внутри другой, с учётом символов подстановки (не используя цикл)?
Категория: Basic
2012-09-17 15:52:08
Для того, чтобы определить позицию появления одной строки внутри другой можно применить Basic функцию InStr, однако, если при поиске необходимо использовать символы подстановки ? и *, то в таком случае Вы можете воспользоваться стандартной функцией рабочего листа ПОИСК/Search
code: #vba
iText$ = "Текст, в котором нам необходимо найти барона Врангеля [1878-1928]" iResult = Application.Search("Вр?нгел", iText$) If Not IsError(iResult) Then MsgBox "Текст начинается с позиции# " & iResult, , "" Else MsgBox "Искомый текст не найден", , "" End If
code: #vba
iText$ = "Текст, в котором нам необходимо найти капитана Врунгеля" iResult = Application.Search("Вр?нгел", iText$) If IsNumeric(iResult) = True Then MsgBox "Текст начинается с позиции# " & iResult, , "" Else MsgBox "Искомый текст не найден", , "" End If
code: #vba
iText$ = "Текст, где вроде бы есть барон Мюнхгаузен" If iText$ Like "*Мюнх*аузен*" Then MsgBox "Текст начинается с позиции# " & _ WorksheetFunction.Search("Мюнх*аузен", iText$), , "" Else MsgBox "Искомый текст не найден", , "" End If
Примечание:
- Максимально допустимое количество символов в строке не должно превышать 32767
- По умолчанию поиск начинается с первого символа, однако, это легко исправить, если использовать третий(необязательный) аргумент функции, например, Application.Search("Текст", "Внутр_текста", 5)
- Если нет необходимости в определении позиции вхождения, то для определения наличия искомой строки, достаточно всего лишь использовать оператор Like
Поделиться: