Ответы:
Используйте функцию Instr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
вернется 15 в поз
Если не найден, он вернет 0
Если вам нужно найти запятую с формулой Excel, вы можете использовать =FIND(",";A1)
функцию.
Обратите внимание, что если вы хотите использовать, Instr
чтобы найти позицию строки без учета регистра, используйте третий параметр Instr и vbTextCompare
присвойте ему значение const (или просто 1 для несгибаемых символов).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
даст вам значение 14.
Обратите внимание, что вы должны указать начальную позицию в этом случае, как указано в спецификации, с которой я связан: Аргумент start необходим, если указано сравнение.
Вы также можете использовать специальное слово like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
Также есть InStrRev функция которая делает то же самое, но начинает поиск с конца текста до начала.
Ответ Пер @ Рене ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... все равно вернет 15 в pos, но если строка содержит более одной строки поиска, например слово "the", то:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... вернул бы 20 в поз, а не 6.
Основываясь на ответе Рене, вы также можете написать функцию, которая возвращает либо TRUE, если подстрока, либо FALSE, если ее нет:
Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function
INSTR
тебя работает?