Text in einer Zeichenfolge suchen (INSTR-Funktion) - VBA-Codebeispiele

INSTR-Funktion

Die VBA-Instr-Funktion überprüft, ob eine Textzeichenfolge in einer anderen Textzeichenfolge gefunden wird. Es gibt 0 zurück, wenn der Text nicht gefunden wird. Andernfalls wird die Zeichenposition zurückgegeben, an der sich der Text befindet.

Die Instr-Funktion führt aus genau Streichhölzer. Der VBA-ähnliche Operator kann stattdessen verwendet werden, um ungenaue Übereinstimmungen / Mustervergleiche mithilfe von Wildcards durchzuführen.

Instr-Beispiel

Der folgende Codeausschnitt durchsucht den String „Look in this string“ nach dem Wort „Look“. Die Instr-Funktion gibt 1 zurück, da der Text an der ersten Position gefunden wird.

123 Unter FindSomeText()MsgBox InStr("In diesem String suchen", "Look")End Sub

Dieses zweite Beispiel gibt 7 zurück, da der Text ab der 7. Position gefunden wird:

123 Unter FindSomeText2()MsgBox InStr("Nicht in dieser Zeichenfolge suchen", "Suchen")End Sub

Wichtig! Die Instr-Funktion ist Groß-/Kleinschreibung beachten standardmäßig. Das bedeutet, dass „look“ nicht mit „Look“ übereinstimmt. Um den Test zwischen Groß- und Kleinschreibung zu unterscheiden, lesen Sie unten.

Instr-Syntax

Die Syntax für die Instr-Funktion lautet wie folgt:

1 Instr( [Start], Zeichenfolge, Teilzeichenfolge, [Vergleichen])

[Start] (optional) - Dieses optionale Argument ist die Startposition der Suche. Geben Sie 1 ein, um die Suche ab Position 1 zu starten (oder lassen Sie das Feld leer). Geben Sie 5 ein, um die Suche ab Position 5 zu starten. Wichtig! Die Funktion INSTR berechnet die Zeichenposition durch Zählen von 1 NICHT von der [Start]-Position.

Schnur - Die Textzeichenfolge, in der gesucht werden soll.

Teilzeichenfolge - Die Textzeichenfolge, die in der primären Zeichenfolge gesucht werden soll.

[vergleichen] (optional) - Standardmäßig beachtet Instr die Groß-/Kleinschreibung. Durch Setzen dieses Arguments können Sie die Groß-/Kleinschreibung unempfindlich machen:

Argument vb-Wert

Argument Ganzzahl Beschreibung
vbBinaryVergleichen

0

(Standard) Groß-/Kleinschreibung beachten

vbTextVergleichen

1

Groß-/Kleinschreibung nicht beachten

vbDatenbankVergleichen

2

Nur MS-Zugriff. Verwendet Informationen in der Datenbank, um einen Vergleich durchzuführen.

Instr Startposition

Mit der Instr-Startposition können Sie die Zeichenposition angeben, an der Sie Ihre Suche beginnen. Beachten Sie jedoch, dass die Instr-Ausgabe immer ab 1 zählt.

Hier setzen wir die Startposition auf 3, um das erste B zu überspringen:

123 Sub Instr_StartPosition()MsgBox InStr(3, "ABC ABC", "B")End Sub

Das Ergebnis ist 6, weil das zweite B das 6. Zeichen in der Zeichenfolge ist.

INSTR-Test ohne Berücksichtigung der Groß-/Kleinschreibung

Standardmäßig behandelt VBA „L“ anders als „l“. Mit anderen Worten, bei VBA wird die Groß-/Kleinschreibung beachtet. Dies gilt für alle Textfunktionen. Damit VBA die Groß-/Kleinschreibung nicht berücksichtigt, legen Sie das Argument [compare] auf 1 oder vbTextCompare fest.

123 Öffentliches Unterverzeichnis FindText_IgnoreCase()MsgBox InStr(1, "Nicht in dieser Zeichenfolge suchen", "look", vbTextCompare)End Sub

Alternativ können Sie die Option Text vergleichen oben in Ihrem Codemodul hinzufügen:

1 Option Text vergleichen
12345 Option Text vergleichenÖffentliches Unterverzeichnis FindText_IgnoreCase2()MsgBox InStr("Nicht in dieser Zeichenfolge suchen", "look")End Sub

Die Option Text vergleichen wirkt sich auf den gesamten Code in diesem Modul aus. Ich persönlich setze dies an die Spitze jedes Moduls, das sich mit Text befasst, da ich mich nie um Unterschiede zwischen Groß- und Kleinschreibung kümmere.

InstrRev-Funktion

Die Instr-Funktion sucht von links. Stattdessen können Sie mit der InstrRev-Funktion von rechts suchen. Die InstrRev-Funktion funktioniert sehr ähnlich wie die Instr-Funktion.

123 Unter FindSomeText_FromRight()MsgBox InStrRev("In dieser Zeichenfolge suchen", "Suchen")End Sub

Genau wie die Instr-Funktion gibt diese 1 zurück, da es nur eine Instanz von „Look“ im Text gibt. Aber wenn wir einen zweiten „Look“ hinzufügen, werden Sie sehen, dass er die Position des „Looks“ ganz rechts zurückgibt:

123 Unter FindSomeText_FromRight()MsgBox InStrRev("In diesem String suchen Look", "Look")End Sub

Als nächstes werden wir weitere Instr-Beispiele überprüfen.

InString-Beispiele

Wenn Zeichenfolge Teilzeichenfolge enthält

Hier verwenden wir eine If-Anweisung, um zu testen, ob eine Zeichenfolge eine Teilzeichenfolge von Text enthält:

123456789 Öffentliches Unterverzeichnis FindSomeText()If InStr("Look in this string", "look") = 0 ThenMsgBox "Keine Übereinstimmung"AndersMsgBox "Mindestens eine Übereinstimmung"Ende WennEnd Sub

Textzeichenfolge in einer Zelle suchen

Sie können auch eine Zeichenfolge in einer Zelle finden:

12345 Unter Find_String_Cell()If InStr(Range("B2").Value, "Dr.") > 0 ThenRange("C2").Value = "Arzt"Ende WennEnd Sub

Oder durchlaufen Sie einen Zellbereich, um zu testen, ob die Zellen Text enthalten:

12345678910 Sub Search_Range_For_Text()Zelle als Bereich dimmenFür jede Zelle im Bereich("b2:b6")Wenn InStr(cell.Value, "Dr.") > 0 Thencell.Offset(0, 1).Value = "Arzt"Ende WennNächste ZelleEnd Sub

Position eines Zeichens in einer Zeichenfolge suchen

Dieser Code findet die Position eines einzelnen Zeichens in einer Zeichenfolge und weist die Position einer Variablen zu:

1234 Sub Find_Char()Dim n As Longn = InStr("Hier schau hier", "L")End Sub

Suchzeichenfolge für Wort

Dieser Code durchsucht eine Zeichenfolge nach einem Wort:

12345678910 Sub Search_String_For_Word()Dim n As Longn = InStr("Hier schau hier", "Suche")Wenn n = 0 DannMsgBox "Wort nicht gefunden"AndersMsgBox "Wort gefunden in Position: " & nEnde WennEnd Sub

Wenn Variable String enthält

Dieser Code testet, ob eine Zeichenfolgenvariable eine Textzeichenfolge enthält:

12345678 Untervariable_Contains_String()Dim str als Stringstr = "Schau hier"Wenn InStr(str, "Hier") > 0 ThenMsgBox "Hier gefunden!"Ende WennEnd Sub

Instr und die Left-Funktion

Instr kann zusammen mit anderen Textfunktionen wie Left, Right, Len und Mid verwendet werden, um Text zu trimmen.

Mit der Left-Funktion können Sie den Text vor einer Textkette ausgeben:

1234567891011 Sub Instr_Left()Dim str als StringDim n As Longstr = "Schau hier"n = InStr(str, "Hier")MsgBox Left(str, n - 1)End Sub

Verwenden von Instr in Microsoft Access VBA

Alle oben genannten Beispiele funktionieren in Access VBA genauso wie in Excel VBA.

Um mehr zu erfahren, lesen Sie unseren Artikel: VBA-Textfunktionen

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave