2013-03-23 32 views

Antwort

269

Verwenden Sie die Instr Funktion

Dim pos As Integer 

pos = InStr("find the comma, in the string", ",") 

wird 15 in pos Rück

Wenn es nicht 0 wird wieder gefunden

Wenn Sie das Komma mit einer Excel-Formel zu finden, müssen Sie die verwenden können, =FIND(",";A1) Funktion.

Beachten Sie, dass, wenn Sie wollen Instr verwenden den dritten Parameter von Instr die Position einer Strings Groß- und Kleinschreibung Verwendung zu finden und die const vbTextCompare (oder nur 1 für Hartgesottene) geben.

Dim posOf_A As Integer 

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare) 

geben Ihnen einen Wert von 14.

Beachten Sie, dass die Startposition in diesem Fall angeben müssen, wie in der Beschreibung angegeben I verknüpft: Der Start Argument ist erforderlich, wenn angegeben wird, zu vergleichen.

+2

Aber was, wenn die gefundene Zeichenfolge in Position 0 ist? Wie unterscheiden Sie zwischen "gefunden auf Index 0" und "nicht gefunden (0)"? – gEdringer

+6

@gEdringer. Wenn die zu suchende Zeichenfolge am Anfang steht, wird 1 zurückgegeben. – rene

18

Es gibt auch die InStrRev Funktion, die die gleiche Art von Sache tut, aber beginnt die Suche vom Ende des Textes bis zum Anfang.

Per Antwort des @Rene ...

Dim pos As Integer 
pos = InStrRev("find the comma, in the string", ",") 

... würde immer noch 15 bis Po zurück, aber wenn die Zeichenfolge mehr als eine der Suchzeichenfolge, wie das Wort „der“, dann:

Dim pos As Integer 
pos = InStrRev("find the comma, in the string", "the") 

... würde 20 bis po zurückzukehren, statt 6.

15

aufbauend auf Rene Antwort, können Sie auch eine Funktion schreiben könnten, die entweder TRUE, wenn der Teil vorhanden war, oder FALSE, wenn es zurückgegeben wasn 't:

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 
+2

Welche Art von Datenbankfehler erwarten wir in dieser Funktion? Der Fehler Trapping und die Fehlermeldung scheinen völlig sinnlos. –

+7

@ RoobieNuby Das ist nur meine Standardfehlerbehandlung. Ich stelle es auf alle meine Funktionen, denn wenn etwas schief geht, möchte ich, dass die Mitarbeiter mich anrufen, nicht versuchen, es selbst zu beheben. – BFWebAdmin

38

Sie können auch das besondere Wort verwenden like:

Public Sub Search() 
    If "My Big String with, in the middle" Like "*,*" Then 
    Debug.Print ("Found ','") 
    End If 
End Sub 
+2

Link zum Musterformat https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx?f=255&MSPPError=-2147217396 –

Verwandte Themen