Odpowiedzi:
Użyj funkcji Instr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
zwróci 15 w poz
Jeśli nie zostanie znalezione, zwróci 0
Jeśli chcesz znaleźć przecinek z formułą programu Excel, możesz użyć =FIND(",";A1)
funkcji.
Zauważ, że jeśli chcesz użyć Instr
do znalezienia pozycji łańcucha bez rozróżniania wielkości liter, użyj trzeciego parametru Instr i nadaj mu const vbTextCompare
(lub tylko 1 dla trudnych warunków).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
da ci wartość 14.
Zauważ, że w tym przypadku musisz określić pozycję początkową, jak podano w specyfikacji, którą połączyłem: Argument początkowy jest wymagany, jeśli podano porównanie.
Możesz także użyć słowa specjalnego like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
Istnieje również funkcja InStrRev, która wykonuje te same czynności, ale rozpoczyna wyszukiwanie od końca tekstu do początku.
Odpowiedź Per @ rene ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... nadal zwróciłby 15 do pozycji pos, ale jeśli ciąg ma więcej niż jeden ciąg wyszukiwania, na przykład słowo „the”, to:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... zwróci 20 do pozycji zamiast 6.
Opierając się na odpowiedzi Rene, możesz również napisać funkcję, która zwróci PRAWDA, jeśli podciąg był obecny, lub FAŁSZ, jeśli nie był:
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
działa dla ciebie?