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