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