VBA InStr

Excel VBA InStr-Funktion

Instr in VBA wird verwendet, um die Position eines bestimmten Teilstrings in einem String herauszufinden, nachdem wir die Vergleichsmethode für die Funktion angegeben haben. Es gibt vier verschiedene Vergleichsmethoden für diese Funktion. Instr ist eine String-Funktion, aber die von der Funktion zurückgegebene Ausgabe ist numerisch, sodass die Ausgabe dieser Funktion in einer ganzzahligen Variablen erfolgt.

Zeichenfolge in VBA ist nichts anderes als eine Reihe von Zeichen, dh alle Texte, die mit doppelten Anführungszeichen versehen sind, werden als Zeichenfolgen behandelt. Die InStr-Funktion ist eine integrierte Textfunktion zum Bearbeiten von Zeichenfolgen. Beispiel: Wenn Sie einen Teilstring aus einem Satz extrahieren möchten oder wenn Sie Änderungen am Schriftdesign auf eine bestimmte Zeichenfolge in einer Reihe von Zeichen anwenden möchten oder wenn Sie die Position eines Zeichens und viele andere Möglichkeiten ermitteln möchten, können Sie diese verwenden InStr.

Syntax

Es hat 4 Argumente, wie im folgenden Bild gezeigt.

  • [Start]: Dies ist nicht obligatorisch. Dies ist der numerische Wert, den wir angeben müssen, ab welcher Position der Instr-Funktion der Zeichenfolge nach dem angegebenen Text zu suchen beginnt. Beispiel: Wenn Sie das Zeichen "a" im Wort "Bangalore" von der 3. Position aus suchen möchten, müssen Sie die Startposition der Instr-Funktion als 3 angeben. Ab der 3. Position befindet sich das Zeichen "a" an der 5. Position. Wenn Sie diesen Parameter ignorieren, ist der Standardwert 1.
  • Zeichenfolge 1: Dies ist die tatsächliche Zeichenfolge, die wir bereitstellen, dh aus diesem Text versuchen wir, die Teilzeichenfolge zu finden. Wenn Sie beispielsweise nach der Zeichenfolge "a" in "Bangalore" suchen, suchen Sie nach Zeichenfolge 1 in Bangalore.
  • String 2: Dies ist nichts anderes als der String, nach dem wir suchen. Wenn Sie beispielsweise in „Bangalore“ nach der Zeichenfolge „a“ suchen, ist Zeichenfolge 2 a .
  • [Vergleichen]: Dies ist wieder ein optionales Argument. Im Argument [compare] stehen drei Arten von Optionen zur Verfügung.

  • vbBinaryCompare: Dies ist nichts anderes als eine Suche nach Groß- und Kleinschreibung der Teilzeichenfolge (Zeichenfolge 2) in Zeichenfolge 1. Wenn wir beispielsweise im Wort "Bangalore" nach "a" suchen, gibt Instr 2 als Ergebnis zurück und wenn Sie suchen für "A" in im Wort "Bangalore" würde Instr als Ergebnis 0 zurückgeben, da die angegebene Zeichenfolge ein Wert in Großbuchstaben ist.

Wir können auch Null (0) als Argument setzen.

vbTextCompare: Dies ist keine Suche nach Groß- und Kleinschreibung der Zeichenfolge 2 in Zeichenfolge 1. Wenn wir beispielsweise im Wort "Bangalore" nach "a" suchen, gibt Instr 2 als Ergebnis zurück und wenn Sie nach "A" suchen. im Wort "Bangalore" würde Instr auch 2 zurückgeben. Die Logik ist A = a, B = b, C = c usw.….

Wir können auch eins (1) als Argument verwenden.

vbDatabaseCompare: Hiermit werden die Informationen aus Ihrer Datenbank, dh der Microsoft Access-Datenbank, verglichen.

Wir können auch eins (-1) als Argument setzen.

Top 5 Beispiele für die Verwendung der VBA Instr-Funktion

Sie können diese VBA Instr Function Excel-Vorlage hier herunterladen - VBA Instr Function Excel-Vorlage

Beispiel 1

Beginnen wir mit dem ersten Beispiel. Im Wort Bangalore finden Sie die Position des Charakters a.

Der folgende Code führt die Aufgabe für uns aus.

Code:

 Sub Instr_Example1 () Dim i als Variante i = InStr ("Bangalore", "a") MsgBox i End Sub 

Führen Sie nun den oben angegebenen VBA-Code mit der Taste F5 aus, oder Sie können diesen Code auch manuell ausführen, wie im folgenden Screenshot gezeigt.

Ausgabe:

Beispiel 2

Finden Sie nun im Wort Bangalore die Position des Zeichens "a" von der dritten Position.

Der folgende Code führt die Aufgabe für uns aus.

Code:

 Sub Instr_Example2 () Dim i als Variante i = InStr (3, "Bangalore", "a") MsgBox i End Sub 

Um den oben angegebenen Code auszuführen, können Sie die Taste F5 verwenden oder diesen Code auch manuell ausführen, wie im folgenden Screenshot gezeigt.

Ausgabe:

Sehen Sie sich nun im obigen Bild den Unterschied zum vorherigen Code an. Da wir die Startposition des Zeichens als 3 erwähnt haben, wurde das erste Zeichen "a" an der 2. Position ignoriert .

Beispiel 3

Jetzt sehen wir die Suche nach Groß- und Kleinschreibung. Im Wort Bangalore finden Sie den Buchstaben "A".

Dazu müssen wir das Argument compare als vbBinaryCompare angeben.

Code:

 Sub Instr_Example3 () Dim i als Variante i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub 

Führen Sie diesen Code jetzt mit der Taste F5 aus, oder Sie können diesen Code auch manuell ausführen.

Ausgabe:

Da wir das Vergleichsargument als vbBinaryCompare Instr-Funktion angegeben haben, wurde das Ergebnis als Null zurückgegeben, da kein Großbuchstabe "A" vorhanden ist.

Beispiel 4

Jetzt sehen wir eine weitere Suche mit Groß- und Kleinschreibung. Im Wort Bangalore finden Sie den Buchstaben "A". Im vorherigen Beispiel wurde das Ergebnis als Null zurückgegeben.

Um den Ansatz der Groß- und Kleinschreibung zu überwinden, müssen wir das Argument compare als vbTextCompare angeben.

Code:

 Sub Instr_Example4 () Dim i als Variante i = InStr (1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub 

Führen Sie diesen Code jetzt mit der Taste F5 aus, oder Sie können diesen Code auch manuell ausführen.

Ausgabe:

Beispiel # 5

Jetzt sehen wir die fortgeschrittene Stufe der Instr-Funktion. Wenn Sie viele Blätter haben, die einen mehr oder weniger ähnlichen Namen haben und alle diese Blätter gleichzeitig ausblenden möchten, können wir den folgenden Code verwenden, um ein bestimmtes Blatt auszublenden.

Zum Beispiel habe ich 5 Blätter mit den Namen Zusammenfassung 1, Zusammenfassung 2, Zusammenfassung 3, Zusammenfassung 4 und Datenblatt.

Jetzt möchte ich alle Blätter ausblenden, die das Wort "Zusammenfassung" enthalten. Verwenden Sie den folgenden Code, um alle Blätter auszublenden, deren Name das Wort Zusammenfassung enthält.

Code:

 Sub To_Hide_Specific_Sheet () Dim Ws als Arbeitsblatt für jedes Ws in ActiveWorkbook.Worksheets Wenn InStr (Ws.Name, "Zusammenfassung")> 0 Dann Ws.Visible = xlSheetVeryHidden End If Next Die InStr-Funktion von Ws sucht nach Wörtern oder Phrasen im Blattnamen 'Wenn es findet, wird es End Sub versteckt 

Now Run, this code using the F5 Key or you can also run this code manually and see the Output.

Similarly in order to unhide all those sheets use the below code.

Code:

 Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary") > 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub 

Now Run, this code using the F5 Key or you can also run this code manually and see the Output.

Things to Remember

  • Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the [compare] argument as.
  • If you are searching for case sensitive character you need to supply the [compare] argument as by default VBA takes this as the argument even if you do not supply.
  • Instr is a VBA function so that you cannot use it in an excel worksheet like other built-in formulas.
  • If the function cannot find the String 2 the result will be zero.