VBA RegEx

VBA RegEx “Regular Expression” är mycket användbart i programmeringsvärlden som kan användas för att validera webbplatsinmatning, sökning av ordmönster i stor sträng / text, för strängsökning och utbyte.

De flesta av oss använder FIND, SUBSTITUTE, LEFT, RIGHT tillsammans med MID-funktioner för strängmanipulation i Microsoft Excel, eller hur? Men dessa funktioner har sina egna begränsningar som inte kan användas i stor utsträckning. Att ha kunskap om VBA Regular Express kommer att spara mycket tid för dig i ditt dagliga liv. Regular Expressions är kortfattade som "RegEx" (eller Regex) i VBA. I denna handledning kommer vi att titta på några av RegEx med deras användning.

Du kan använda VBA RegEx-objekt som redan är skapat i Microsoft VBScript Regular Expressions-bibliotek. Du kan navigera i detta bibliotek genom att klicka på Verktyg - Referens - Microsoft VBScript Regular Expressions.

Du kan också skapa ett RegEx-objekt med hjälp av CreateObject- funktionen i VBA. Det verkar mer praktiskt eftersom du inte alltid behöver hänvisa till VBScript Regular Expressions-biblioteket i det här fallet.

Se koden nedan:

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

Den här koden låter dig skapa och få åtkomst till RegEx-objekt i din makro. Jag föredrar personligen detta sätt framför det första på grund av dess styvhet.

RegEx-funktion gör det möjligt att manipulera följande i en lång sträng.

  • Vilda kort som *, ? etc.
  • Grupperade uttryck tillsammans med jokertecken.

RegEx har nedanstående parametrar / egenskaper:

  1. Mönster - Mönstret som definieras i RegEx som du vill utföra åtgärder på.
  2. IgnoreCase - Ignorera bokstäverna (Caps / Non-Caps är samma i en sträng).
  3. Global - Gör det möjligt att hitta alla möjliga matchningar om de är satt till SANT. Om den är inställd som FALSE hittar den bara den första matchen.
  4. MultiLine - Låter matcha mönstret i en sträng som är spridd längs flera rader.

RegEx underlättar följande tre operationer:

  • Test - Testar om det nämnda mönstret finns i strängen eller inte. Om nuvarande returnerar SANT, annars FALSE.
  • Ersätt - Ersätter originalmönstret med det andra.
  • Utför - Returnerar alla matchade mönster som sökts.

Hur använder jag Excel VBA RegEx?

Vi lär dig hur du använder Excel VBA Regular Expression med några exempel.

Du kan ladda ner denna VBA RegEx Excel-mall här - VBA RegEx Excel-mall

Excel VBA RegEx - Exempel # 1

Här kontrollerar du om det nämnda mönstret finns i texten med RegEx.Test.

Följ stegen nedan för att använda VBA RegEx.

Steg 1: Definiera en ny delprocedur för att skapa ett makro.

Koda:

 Sub RegEx_Ex1 () Slut Sub 

Steg 2: Definiera två variabler RegEx som ett objekt som kan användas för att skapa RegEx-objekt och Str som en sträng.

Koda:

 Sub RegEx_Ex1 () Dim RegEx som objekt, Str Som String End Sub 

Steg 3: Skapa RegEx-objekt med hjälp av CreateObject-funktionen.

Koda:

 Sub RegEx_Ex1 () Dim RegEx Som Objekt, Str Som Sträng Ange RegEx = CreateObject ("VBScript.RegExp") Slut Sub 

Steg 4: Lägg till mönstret som ska testas med RegEx-funktionen.

Koda:

 Sub RegEx_Ex1 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "(0-9) +" Slut med slut Sub 

Steg 5: Definiera strängen inom vilken vi behöver kontrollera det givna mönstret.

Koda:

 Sub RegEx_Ex1 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "(0-9) +" Slut med Str = "Mitt cykelnummer är MH-12 PP- 6145 "End Sub 

Steg 6: Använd RegEx.Test för att testa om det givna mönstret finns i variabeln Str. Använd också Debug.Print för att skriva ut resultatet (True eller False) i det omedelbara fönstret.

Koda:

 Sub RegEx_Ex1 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "(0-9) +" Slut med Str = "Mitt cykelnummer är MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

Steg 7: Tryck på F5 eller Run-knappen för att köra koden och se utgången. (Tryck på CTRL + G för att öppna omedelbart fönster)

Här har vi skapat ett RegEx-objekt. Sedan har vi med VBA RegEx kontrollerat om det givna mönstret (“(0-9) +”) som innehåller alla siffror / kombination av siffror från 0 till 9 finns i strängen definierad med hjälp av RegEx.Test ( str). Output “True” under omedelbart fönster visar att mönstret “(0-9) +” finns i en given sträng.

Excel VBA RegEx - Exempel # 2

Här ser du hur du kan ersätta den ena strängen med en annan med RegEx.Replace.

Följ stegen nedan för att använda VBA RegEx.

Steg 1: Definiera en ny understräng för att skapa ett makro.

Koda:

 Sub RegEx_Ex2 () Slut Sub 

Steg 2: Samma som i det första exemplet, definiera två variabler RegEx som ett objekt som kan innehålla värdet på RegEx-objektet och Str som kommer att hålla upp värdet på strängen du definierar.

Koda:

 Sub RegEx_Ex2 () Dim RegEx som objekt, Str Som String End Sub 

Steg 3: Definiera RegEx-objektet och ställ det till RegEx-variabeln med hjälp av CreateObject-funktionen.

Koda:

 Sub RegEx_Ex2 () Dim RegEx Som Objekt, Str Som Sträng Ange RegEx = CreateObject ("VBScript.RegExp") Slut Sub 

Steg 4: Sätt in mönstret som du vill byta ut med .Pattern-funktionen.

Koda:

 Sub RegEx_Ex2 () Dim RegEx som objekt, Str As String Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123" End With End Sub 

Steg 5: Använd .GLOBAL = SANT vilket om SANT tillåter ersättning av alla matchningsmönster i en given sträng. Om FALSE ersätter bara det första matchningsmönstret.

Koda:

 Sub RegEx_Ex2 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123" .Global = Sann 'Om FALSE ersätter endast den första matchande strängen' End With End Sub 

Steg 6: Efter slut med, definiera strängen som du vill matcha och ersätt mönstret med.

Koda:

 Sub RegEx_Ex2 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123" .Global = Sann 'Om FALSE ersätter endast den första matchande strängen' End With Str = "123-654-000-APY-123-XYZ-888" End Sub 

Steg 6: Använd RegEx.Replace för att ersätta mönstervärdet i den givna strängen med annan text.

Koda:

 Sub RegEx_Ex2 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123" .Global = Sann 'Om FALSE ersätter endast den första matchande strängen' End With Str = "123-654-000-APY-123-XYZ-888" Felsökning. Skriv ut RegEx.Replace (Str, "Ersatt") End Sub 

Här ville vi att mönstret "123" skulle ersättas av någon annan strängbit. RegEx.Replace tillåter att mönstervärdet ersätts med strängen (vi har definierat ”Ersatt”). Titta också på .Global = SANT. Vilket är ett villkorligt uttalande. Om Global = TRUE ersätter funktionen Ersätt alla matchande mönster med den andra strängen. Om GLOBAL = FALSE ersätter funktionen Ersätt endast det första matchande mönstret och vila andra försummas.

Steg 7: Tryck på Kör-knappen eller F5 för att köra den här koden och se utgången i fönstret Omedelbar utgång.

Excel VBA RegEx - Exempel # 3

Här ser du hur du kan hitta alla matchningsmönster i en sträng med RegEx.Execute.

Följ stegen nedan för att använda Excel VBA RegEx.

Steg 1: Definiera en ny delprocedur för att lägga till makro.

Koda:

 Sub RegEx_Ex3 () Slut Sub 

Steg 2: Följ stegen på samma sätt som i de föregående två exemplen för att definiera ett regelbundet uttryck och en variabel som kan hålla strängvärdet.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Slut Sub 

Steg 3: Sätt in ett mönster som du vill köras och matchade i den givna strängen.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123-XYZ" Slut med slut Sub 

Steg 4: Använd .GLOBAL = SANT så att alla matchningar fångas i den givna strängen.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123-XYZ" .Global = True End With End Sub 

Steg 5: Definiera en sträng efter End With under vilken du måste använda Execute och hitta alla matchande mönster.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "End Sub 

Steg 6: Använd nu Kör på den variabla som heter sträng för att ta reda på alla matchningar som är associerade med ett givet mönster.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Ställ in matchningar = RegEx.Execute (Str) End Sub 

Steg 7: Använd For loop för att skriva ut värdet på alla matchade mönster i det omedelbara utdatafönstret.

Koda:

 Sub RegEx_Ex3 () Dim RegEx Som Objekt, Str Som Sträng Ställ in RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Ställ in matchningar = RegEx.Execute (Str) för varje match I matcher Debug.Print Match.Value Nästa match End Sub 

Steg 8: Kör den här koden genom att trycka på F5 eller körknappen och se utgången under omedelbart utgångsfönster.

Denna kod skriver ut alla antalet matchningar för det definierade mönstret.

Saker att komma ihåg

  • VBA Regular Expression kan endast användas för att ta reda på strängarna. För numeriska värden behöver vi uppenbarligen inte en sådan funktion. Alla numeriska värden som beaktas i vart och ett av de tre exemplen ovan definieras faktiskt som en sträng.
  • Excel VBA RegEx ska användas för strängmanipulering när det finns stora data. Att inte använda VBA RegEx minskar programmets effektivitet.
  • VBA RegEx misslyckas när det finns scenarier där ett mönster upprepar ett antal gånger eller oändliga gånger för den skull.

Rekommenderade artiklar

Detta har varit en guide till VBA RegEx. Här diskuterade vi hur du använder Excel VBA RegEx tillsammans med några praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -

  1. Hur man använder VBA Ersätt i Excel?
  2. Använd Infoga kommentar i Excel
  3. Skapa VBA TIMER i Excel
  4. Häckt IF-formel i Excel

Kategori: