VBA RegEx

VBA RegEx "Regular Expression" ist in der Programmierwelt sehr nützlich, da es zur Validierung von Website-Eingaben, zur Suche nach Wortmustern in großen Zeichenfolgen / Texten sowie zur Suche und zum Ersetzen von Zeichenfolgen verwendet werden kann.

Die meisten von uns verwenden FIND, SUBSTITUTE, LEFT, RIGHT zusammen mit MID-Funktionen für die Manipulation von Zeichenfolgen in Microsoft Excel, nicht wahr? Diese Funktionen haben jedoch ihre eigenen Einschränkungen, die nicht weit verbreitet werden können. Das Wissen über reguläre VBA-Ausdrücke spart Ihnen viel Zeit in Ihrem täglichen Leben. Reguläre Ausdrücke werden in VBA als „RegEx“ (oder Regex) abgekürzt. In diesem Tutorial werden wir uns einige der RegEx mit ihrer Verwendung ansehen.

Sie können ein VBA-RegEx-Objekt verwenden, das bereits in der Microsoft VBScript-Bibliothek für reguläre Ausdrücke erstellt wurde. Sie können in dieser Bibliothek navigieren, indem Sie auf Extras - Referenz - Microsoft VBScript Regular Expressions klicken .

Sie können ein RegEx-Objekt auch mit der Funktion CreateObject in VBA erstellen. Dies scheint bequemer zu sein, da Sie in diesem Fall nicht immer auf die VBScript-Bibliothek für reguläre Ausdrücke verweisen müssen.

Siehe den Code unten:

 Regex als Objektmenge dimmen Regex = CreateObject ("VBScript.RegExp") 

Mit diesem Code können Sie RegEx-Objekte in Ihrem Makro erstellen und darauf zugreifen. Ich persönlich bevorzuge diesen Weg gegenüber dem ersten wegen seiner Steifheit.

Mit der RegEx-Funktion können Sie Folgendes in einer langen Zeichenfolge bearbeiten.

  • Wild Cards wie *, ? etc.
  • Gruppierte Ausdrücke zusammen mit Platzhaltern.

RegEx hat folgende Parameter / Eigenschaften:

  1. Muster - Das in RegEx definierte Muster, mit dem Sie Operationen ausführen möchten.
  2. IgnoreCase - Ignoriert die Groß- / Kleinschreibung von Buchstaben (Groß- / Kleinschreibung ist in einer Zeichenfolge identisch).
  3. Global - Ermöglicht die Suche nach allen möglichen Übereinstimmungen, wenn TRUE eingestellt ist. Bei der Einstellung FALSE wird nur die erste Übereinstimmung gefunden.
  4. MultiLine - Ermöglicht das Anpassen des Musters in einer Zeichenfolge, die sich über mehrere Linien erstreckt.

RegEx erleichtert die folgenden drei Operationen:

  • Test - Testet, ob das erwähnte Muster in der Zeichenfolge vorhanden ist oder nicht. Wenn vorhanden, wird TRUE zurückgegeben, sonst FALSE.
  • Ersetzen - Ersetzt das ursprüngliche Muster durch das andere.
  • Ausführen - Gibt alle gesuchten Muster zurück.

Wie benutze ich Excel VBA RegEx?

Anhand einiger Beispiele lernen wir, wie man Excel VBA Regular Expression verwendet.

Sie können diese VBA RegEx Excel-Vorlage hier herunterladen - VBA RegEx Excel-Vorlage

Excel VBA RegEx - Beispiel # 1

Hier prüfen Sie mit RegEx.Test, ob das genannte Muster im Text vorhanden ist.

Führen Sie die folgenden Schritte aus, um VBA RegEx zu verwenden.

Schritt 1: Definieren Sie eine neue Unterprozedur, um ein Makro zu erstellen.

Code:

 Sub RegEx_Ex1 () End Sub 

Schritt 2: Definieren Sie zwei Variablen RegEx als Objekt, mit denen ein RegEx-Objekt erstellt werden kann, und Str als Zeichenfolge.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String End Sub 

Schritt 3: Erstellen Sie ein RegEx-Objekt mit der Funktion CreateObject.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") End Sub 

Schritt 4: Fügen Sie das zu testende Muster mit der RegEx-Funktion hinzu.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With End Sub 

Schritt 5: Definieren Sie den String, in dem das angegebene Muster überprüft werden soll.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With Str = "Meine Fahrradnummer ist MH-12 PP- 6145 "End Sub 

Schritt 6: Verwenden Sie RegEx.Test, um zu testen, ob das angegebene Muster in der Variablen mit dem Namen Str vorhanden ist. Verwenden Sie außerdem Debug.Print, um das Ergebnis (True oder False) im unmittelbaren Fenster zu drucken.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With Str = "Meine Fahrradnummer ist MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

Schritt 7: Drücken Sie die Taste F5 oder Run, um den Code auszuführen und die Ausgabe anzuzeigen. (Drücken Sie STRG + G, um das Direktfenster zu öffnen.)

Hier haben wir ein RegEx-Objekt erstellt. Dann haben wir mit VBA RegEx überprüft, ob das angegebene Muster („(0-9) +“), das alle Zahlen / Zahlenkombinationen von 0 bis 9 enthält, in der mit Hilfe von RegEx.Test ( Str). Die Ausgabe „True“ im Direktfenster zeigt, dass das Muster „(0-9) +“ in einer bestimmten Zeichenfolge vorhanden ist.

Excel VBA RegEx - Beispiel # 2

Hier sehen Sie, wie Sie die eine Zeichenfolge mit RegEx.Replace durch eine andere ersetzen können.

Führen Sie die folgenden Schritte aus, um VBA RegEx zu verwenden.

Schritt 1: Definieren Sie eine neue Unterzeichenfolge, um ein Makro zu erstellen.

Code:

 Sub RegEx_Ex2 () End Sub 

Schritt 2: Definieren Sie wie im ersten Beispiel zwei Variablen RegEx als ein Objekt, das den Wert des RegEx-Objekts enthalten kann, und Str, das den Wert der von Ihnen definierten Zeichenfolge enthält.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String End Sub 

Schritt 3: Definieren Sie das RegEx-Objekt und setzen Sie es mithilfe der CreateObject-Funktion auf die RegEx-Variable.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") End Sub 

Schritt 4: Fügen Sie das zu ersetzende Muster mit der .Pattern-Funktion ein.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" End With End Sub 

Schritt 5: Verwenden Sie .GLOBAL = TRUE. Wenn dies der Fall ist, können Sie alle übereinstimmenden Muster in einer bestimmten Zeichenfolge ersetzen. Wenn FALSE, wird nur das erste übereinstimmende Muster ersetzt.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Wenn FALSE, ersetzt nur die erste übereinstimmende Zeichenfolge' End With End Sub 

Schritt 6: Definieren Sie nach Ende mit die Zeichenfolge, mit der Sie übereinstimmen möchten, und ersetzen Sie das Muster durch.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Wenn FALSE, ersetzt nur die erste übereinstimmende Zeichenfolge' End With Str = "123-654-000-APY-123-XYZ-888" End Sub 

Schritt 6: Verwenden Sie RegEx.Replace, um den Musterwert in der angegebenen Zeichenfolge durch anderen Text zu ersetzen.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Wenn FALSE, ersetzt nur die erste übereinstimmende Zeichenfolge' End With Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Replaced") End Sub 

Hier wollten wir, dass das Muster „123“ durch ein anderes Stück Schnur ersetzt wird. RegEx.Replace ermöglicht das Ersetzen des Musterwerts durch das Stück Zeichenfolge (wir haben "Ersetzt" definiert). Bitte beachten Sie auch .Global = TRUE. Welches ist eine bedingte Aussage. Wenn Global = TRUE, ersetzt die Funktion Replace alle übereinstimmenden Muster durch die andere Zeichenfolge. Wenn GLOBAL = FALSE, ersetzt die Replace-Funktion nur das erste übereinstimmende Muster und alle anderen werden vernachlässigt.

Schritt 7: Drücken Sie die Taste "Ausführen" oder F5, um diesen Code auszuführen und die Ausgabe im Fenster "Sofortige Ausgabe" anzuzeigen.

Excel VBA RegEx - Beispiel # 3

Hier sehen Sie, wie Sie mit RegEx.Execute alle übereinstimmenden Muster in einer Zeichenfolge finden können.

Führen Sie die folgenden Schritte aus, um Excel VBA RegEx zu verwenden.

Schritt 1: Definieren Sie eine neue Unterprozedur, um das Makro hinzuzufügen.

Code:

 Sub RegEx_Ex3 () End Sub 

Schritt 2: Befolgen Sie die gleichen Schritte wie in den beiden vorherigen Beispielen, um einen regulären Ausdruck und eine Variable zu definieren, die den Zeichenfolgenwert enthalten kann.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") End Sub 

Schritt 3: Fügen Sie ein Muster ein, das in der angegebenen Zeichenfolge ausgeführt und abgeglichen werden soll.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" End With End Sub 

Schritt 4: Verwenden Sie .GLOBAL = TRUE, damit alle Übereinstimmungen in der angegebenen Zeichenfolge erfasst werden.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" .Global = True End With End Sub 

Schritt 5: Definieren Sie nach End With eine Zeichenfolge, unter der Sie Execute verwenden müssen, und suchen Sie alle übereinstimmenden Muster.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "End Sub 

Schritt 6: Verwenden Sie nun Execute für die Variable string, um alle Übereinstimmungen zu ermitteln, die einem bestimmten Muster zugeordnet sind.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Übereinstimmungen festlegen = RegEx.Execute (Str) End Sub 

Schritt 7: Verwenden Sie die For-Schleife, um den Wert aller übereinstimmenden Muster in das unmittelbare Ausgabefenster zu drucken.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Setze Übereinstimmungen = RegEx.Execute (Str) für jede Übereinstimmung in Übereinstimmungen Debug.Print Match.Value Next Match End Sub 

Schritt 8: Führen Sie diesen Code durch Drücken von F5 oder Ausführen aus und sehen Sie die Ausgabe im Fenster für die sofortige Ausgabe.

Dieser Code gibt alle Übereinstimmungen für das definierte Muster aus.

Dinge, an die man sich erinnern sollte

  • Der reguläre VBA-Ausdruck kann nur zum Ermitteln der Zeichenfolgen verwendet werden. Offensichtlich benötigen wir für numerische Werte keine solche Funktion. Alle in den drei obigen Beispielen berücksichtigten numerischen Werte sind tatsächlich als Zeichenfolge definiert.
  • Excel VBA RegEx soll für die Manipulation von Zeichenfolgen verwendet werden, wenn große Datenmengen vorliegen. Die Nichtverwendung von VBA RegEx verringert die Effizienz des Programms.
  • VBA RegEx schlägt fehl, wenn es Szenarien gibt, in denen ein Muster n-mal oder unendlich oft wiederholt wird.

Empfohlene Artikel

Dies war ein Leitfaden für VBA RegEx. Hier haben wir die Verwendung von Excel VBA RegEx zusammen mit einigen praktischen Beispielen und einer herunterladbaren Excel-Vorlage besprochen. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Wie verwende ich VBA Replace in Excel?
  2. Verwenden von Kommentar einfügen in Excel
  3. VBA-TIMER in Excel erstellen
  4. Verschachtelte IF-Formel in Excel

Kategorie: