Відповіді:
Використовуйте Instr функцію
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
поверне 15 в поз
Якщо його не знайдено, воно поверне 0
Якщо вам потрібно знайти кому з формулою excel, ви можете скористатися =FIND(",";A1)
функцією.
Зауважте, що якщо ви хочете використовувати Instr
позицію строкової нечутливої до регістру, використовуйте третій параметр Instr і надайте йому const vbTextCompare
(або просто 1 для die-hards).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
дасть вам значення 14.
Зауважте, що ви повинні вказати початкову позицію в цьому випадку, як зазначено в специфікації, з якою я пов’язаний: Якщо вказано порівняння, потрібен аргумент старту.
Ви також можете використовувати спеціальне слово like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
Існує також функція InStrRev, яка робить однотипні речі, але починає пошук з кінця тексту до початку.
Відповідь Per @ rene ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... все ще повертається 15 до пози, але якщо рядок містить більше одного рядка пошуку, як, наприклад, слово "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
працює на вас?