VBA RegEx

VBA RegEx "Reguliere expressie" is erg handig in de programmeerwereld die kan worden gebruikt om website-invoer, het zoeken naar woordpatronen in grote tekenreeksen / tekst, voor tekenreeksen zoeken en vervanging te valideren.

De meesten van ons gebruiken VINDEN, VERVANGEN, LINKS, RECHTS samen met MID-functies voor stringmanipulatie in Microsoft Excel, nietwaar? Deze functies hebben echter hun eigen beperkingen die niet breed kunnen worden gebruikt. Kennis van VBA Reguliere Expressies bespaart u veel tijd in uw dagelijks leven. Reguliere expressies worden kort weergegeven als "RegEx" (of Regex) in VBA. In deze tutorial gaan we een kijkje nemen op enkele RegEx met hun gebruik.

U kunt het VBA RegEx-object gebruiken dat al is gemaakt in de bibliotheek Microsoft VBScript Regular Expressions. U kunt door deze bibliotheek navigeren door te klikken op Extra - Referentie - Microsoft VBScript Reguliere expressies.

U kunt ook een RegEx-object maken met de functie CreateObject in VBA. Het lijkt handiger, omdat u in dit geval niet altijd de VBScript-bibliotheek voor reguliere expressies hoeft te raadplegen.

Zie onderstaande code:

 Dim regex als Object Set regex = CreateObject ("VBScript.RegExp") 

Met deze code kunt u RegEx-objecten in uw macro maken en openen. Ik geef persoonlijk de voorkeur boven deze eerste vanwege de starheid.

RegEx-functie maakt het mogelijk om het volgende in een lange reeks te manipuleren.

  • Jokertekens zoals *, ? enz.
  • Gegroepeerde uitdrukkingen samen met jokertekens.

RegEx heeft onderstaande parameters / eigenschappen:

  1. Patroon - Het patroon gedefinieerd in RegEx waarop u bewerkingen wilt uitvoeren.
  2. IgnoreCase - Negeer het hoofdlettergebruik (hoofdletters / niet-hoofdletters zijn hetzelfde in een string).
  3. Wereldwijd - Hiermee kunnen alle mogelijke overeenkomsten worden gevonden als deze op WAAR zijn ingesteld. Indien ingesteld op FALSE, wordt alleen de eerste overeenkomst gevonden.
  4. MultiLine - Hiermee kunt u het patroon matchen in een tekenreeks die over meerdere lijnen is verspreid.

RegEx vergemakkelijkt de onderstaande drie bewerkingen:

  • Test - Test of het genoemde patroon aanwezig is in de string of niet. Indien aanwezig geeft WAAR terug, anders ONWAAR.
  • Vervangen - Vervangt het originele patroon door het andere.
  • Uitvoeren - Retourneert alle gezochte overeenkomende patronen.

Hoe Excel VBA RegEx te gebruiken?

We zullen leren hoe u Excel VBA Regular Expression kunt gebruiken met enkele voorbeelden.

U kunt deze VBA RegEx Excel-sjabloon hier downloaden - VBA RegEx Excel-sjabloon

Excel VBA RegEx - Voorbeeld # 1

Hier zult u controleren of het genoemde patroon aanwezig is in de tekst met RegEx.Test.

Volg de onderstaande stappen om VBA RegEx te gebruiken.

Stap 1: Definieer een nieuwe subprocedure om een ​​macro te maken.

Code:

 Sub RegEx_Ex1 () Einde Sub 

Stap 2: Definieer twee variabelen RegEx als een object dat kan worden gebruikt om een ​​RegEx-object en Str als een string te maken.

Code:

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

Stap 3: Maak een RegEx-object met de functie CreateObject.

Code:

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

Stap 4: Voeg het te testen patroon toe met de RegEx-functie.

Code:

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

Stap 5: Definieer de string waarbinnen we het gegeven patroon moeten controleren.

Code:

 Sub RegEx_Ex1 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With Str = "Mijn fietsnummer is MH-12 PP- 6145 "Einde Sub 

Stap 6: Gebruik RegEx.Test om te testen of het gegeven patroon aanwezig is in de variabele met de naam Str. Gebruik ook Debug.Print om het resultaat (waar of niet waar) in het directe venster af te drukken.

Code:

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

Stap 7: Druk op F5 of op de knop Uitvoeren om de code uit te voeren en de uitvoer te bekijken. (Druk op CTRL + G om Direct venster te openen)

Hier hebben we een RegEx-object gemaakt. Vervolgens hebben we met VBA RegEx gecontroleerd of het gegeven patroon (“(0-9) +”) dat alle nummers / combinaties van nummers van 0 tot 9 bevat, aanwezig is in de tekenreeks die is gedefinieerd met behulp van RegEx.Test ( Str). Uitvoer "True" onder direct venster laat zien dat het patroon "(0-9) +" aanwezig is in een gegeven string.

Excel VBA RegEx - Voorbeeld # 2

Hier ziet u hoe u de ene string kunt vervangen door de andere met RegEx.Replace.

Volg de onderstaande stappen om VBA RegEx te gebruiken.

Stap 1: Definieer een nieuwe subtekenreeks om een ​​macro te maken.

Code:

 Sub RegEx_Ex2 () Einde Sub 

Stap 2: hetzelfde als in het eerste voorbeeld, definieer twee variabelen RegEx als een object dat de waarde van het RegEx-object kan bevatten en Str die de waarde van de string die u definieert, kan bevatten.

Code:

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

Stap 3: Definieer het RegEx-object en stel het in op RegEx-variabele met de functie CreateObject.

Code:

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

Stap 4: Voeg het patroon in dat u wilt vervangen met behulp van de .Pattern-functie.

Code:

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

Stap 5: Gebruik .GLOBAL = WAAR dat als WAAR het mogelijk maakt alle overeenkomende patronen in een gegeven string te vervangen. Als FALSE alleen het eerste overeenkomende patroon vervangt.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Vervangt alleen de eerste overeenkomende string' End With End Sub 

Stap 6: Definieer na het einde met de tekenreeks waarmee u wilt matchen en vervang het patroon.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Vervangt alleen de eerste overeenkomende string' End With Str = "123-654-000-APY-123-XYZ-888" Einde Sub 

Stap 6: Gebruik RegEx.Replace om de patroonwaarde in de gegeven string te vervangen door andere tekst.

Code:

 Sub RegEx_Ex2 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True 'Vervangt alleen de eerste overeenkomende string' End With Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Vervangen") End Sub 

Hier wilden we het patroon “123” vervangen door een ander touwtje. RegEx.Replace maakt het mogelijk om de patroonwaarde te vervangen door het touwtje (we hebben “Vervangen” gedefinieerd). Bekijk ook .Global = WAAR. Dat is een voorwaardelijke verklaring. Als Globaal = WAAR, vervangt de functie Vervangen alle overeenkomende patronen door de andere tekenreeks. Als GLOBAL = FALSE, vervangt de functie Vervangen alleen het eerste overeenkomende patroon en worden andere verwaarloosd.

Stap 7: Druk op de knop Uitvoeren of F5 om deze code uit te voeren en de uitvoer te bekijken in het venster Direct uitvoer.

Excel VBA RegEx - Voorbeeld # 3

Hier ziet u hoe u alle overeenkomende patronen in een tekenreeks kunt vinden met RegEx.Execute.

Volg de onderstaande stappen om Excel VBA RegEx te gebruiken.

Stap 1: Definieer een nieuwe subprocedure om de macro toe te voegen.

Code:

 Sub RegEx_Ex3 () Einde Sub 

Stap 2: Volg de stappen op dezelfde manier als in de vorige twee voorbeelden om een ​​reguliere expressie en een variabele te definiëren die de tekenreekswaarde kan bevatten.

Code:

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

Stap 3: Voeg een patroon in dat u wilde uitvoeren en matchen in de gegeven string.

Code:

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

Stap 4: Gebruik .GLOBAL = WAAR zodat alle wedstrijden in de gegeven string worden vastgelegd.

Code:

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

Stap 5: Definieer een string na End With waaronder u Execute moet gebruiken en alle overeenkomende patronen moet vinden.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String Set 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 

Stap 6: Gebruik nu Uitvoeren op de variabele string om alle overeenkomsten te vinden die aan een bepaald patroon zijn gekoppeld.

Code:

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

Stap 7: Gebruik For-lus om de waarde van alle overeenkomende patronen in het directe uitvoervenster af te drukken.

Code:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Wedstrijden instellen = RegEx.Execute (Str) Voor elke wedstrijd In wedstrijden Debug.Print Match.Value Volgende wedstrijd Einde Sub 

Stap 8: Voer deze code uit door op F5 te drukken of op de knop Uitvoeren en bekijk de uitvoer onder het directe uitvoervenster.

Deze code drukt al het aantal overeenkomsten af ​​voor het patroon dat is gedefinieerd.

Dingen om te onthouden

  • VBA Reguliere expressie kan alleen worden gebruikt om de tekenreeksen te achterhalen. Vanzelfsprekend hebben we voor numerieke waarden zo'n functie niet nodig. Alle numerieke waarden die in elk van de drie bovenstaande voorbeelden worden beschouwd, zijn feitelijk als een tekenreeks gedefinieerd.
  • Excel VBA RegEx wordt verondersteld te worden gebruikt voor stringmanipulatie wanneer er grote gegevens zijn. Het niet gebruiken van VBA RegEx vermindert de efficiëntie van het programma.
  • VBA RegEx mislukt wanneer er scenario's zijn waarbij een patroon n aantal keren of oneindige tijden herhaalt om die reden.

Aanbevolen artikelen

Dit is een handleiding voor VBA RegEx geweest. Hier hebben we besproken hoe u Excel VBA RegEx kunt gebruiken, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Hoe VBA vervangen in Excel te gebruiken?
  2. Gebruik commentaar invoegen in Excel
  3. VBA-TIMER maken in Excel
  4. Geneste IF-formule in Excel

Categorie: