VBA RegEx

VBA RegEx „Regular Expression” este foarte util în lumea programării, care poate fi utilizat pentru a valida introducerea site-ului, căutarea modelelor de cuvinte în text / text mare, pentru căutarea și înlocuirea șirurilor.

Cei mai mulți dintre noi folosim FIND, SUBSTITUTE, LEFT, DREPT, împreună cu funcțiile MID pentru manipularea șirurilor în Microsoft Excel, nu-i așa? Cu toate acestea, aceste funcții au propriile lor limitări care nu pot fi utilizate pe scară largă. Să aveți cunoștințe despre VBA Expresii regulate vă vor economisi mult timp pentru dvs. în viața de zi cu zi. Expresiile regulate sunt formate scurt ca „RegEx” (sau Regex) în VBA. În acest tutorial, vom arunca o privire asupra unora dintre RegEx cu utilizarea lor.

Puteți utiliza obiectul VBA RegEx care este deja creat în biblioteca Microsoft VBScript Regular Expressions. Puteți naviga în această bibliotecă dând clic pe Instrumente - Referință - Expresii regulate Microsoft VBScript.

De asemenea, puteți crea un obiect RegEx folosind funcția CreateObject în VBA. Pare un mod mai convenabil, deoarece nu trebuie să faceți întotdeauna referire la biblioteca VBScript Regular Expressions în acest caz.

Vedeți codul de mai jos:

 Dim regex ca set de obiect regex = CreateObject ("VBScript.RegExp") 

Acest cod vă va permite să creați și să accesați obiecte RegEx în macro-ul dvs. Eu personal prefer acest mod decât primul, datorită rigidității sale.

Funcția RegEx permite manipularea următoarelor într-un șir lung.

  • Cărți sălbatice precum *, ? etc.
  • Expresii grupate împreună cu cărți sălbatice.

RegEx are parametrii / proprietățile de mai jos:

  1. Pattern - Modelul definit în RegEx pe care doriți să efectuați operații.
  2. IgnoreCase - Ignoră cazul literelor (Caps / Non-Caps sunt aceleași într-un șir).
  3. Global - Permite găsirea tuturor meciurilor posibile dacă este setat pe TRUE. Dacă este setat ca FALSE, va găsi doar primul meci.
  4. MultiLine - Permite potrivirea modelului într-un șir care este răspândit de-a lungul mai multor linii.

RegEx facilitează următoarele trei operații:

  • Test - Testează dacă modelul menționat este prezent în șir sau nu. Dacă prezentul returnează ADEVĂRAT, altfel FALS.
  • Înlocuire - Înlocuiește modelul original cu celălalt.
  • Execute - returnează toate modelele de căutare căutate.

Cum se utilizează Excel VBA RegEx?

Vom învăța cum să folosiți expresia regulată Excel VBA cu câteva exemple.

Puteți descărca acest șablon VBA RegEx Excel aici - șablonul VBA RegEx Excel

Excel VBA RegEx - Exemplul # 1

Aici, veți verifica dacă modelul menționat este prezent în text folosind RegEx.Test.

Urmați pașii de mai jos pentru a utiliza VBA RegEx.

Pasul 1: Definiți o nouă sub-procedură pentru a crea o macrocomandă.

Cod:

 SubregEx_Ex1 () End Sub 

Pasul 2: Definiți două variabile RegEx ca un obiect care poate fi utilizat pentru a crea obiect RegEx și Str ca șir.

Cod:

 SubregEx_Ex1 () Dim RegEx ca obiect, Str ca șir de cap 

Pasul 3: Creează obiect RegEx folosind funcția CreateObject.

Cod:

 SubregEx_Ex1 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") End Sub 

Pasul 4: Adăugați modelul care va fi testat cu funcția RegEx.

Cod:

 SubregEx_Ex1 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "(0-9) +" Finalizare cu End Sub 

Pasul 5: Definiți șirul în care trebuie să verificăm modelul dat.

Cod:

 Sub RegEx_Ex1 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "(0-9) +" End With Str = "Numărul meu de bicicletă este MH-12 PP- 6145 "Sub final 

Pasul 6: Utilizați RegEx.Test pentru a testa dacă modelul dat este prezent în variabila numită Str. De asemenea, utilizați Debug.Print pentru a imprima rezultatul (True sau False) în fereastra imediată.

Cod:

 Sub RegEx_Ex1 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "(0-9) +" End With Str = "Numărul meu de biciclete este MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) Sub 

Pasul 7: Apăsați butonul F5 sau Run pentru a rula codul și a vedea ieșirea. (Apăsați CTRL + G pentru a deschide Fereastra Imediată)

Aici, am creat un obiect RegEx. Apoi, cu VBA RegEx, am verificat dacă modelul dat („(0-9) +”) care include toate numerele / combinația de numere de la 0 la 9 este prezent în șirul definit cu ajutorul lui RegEx.Test ( Str). Ieșirea „True” în fereastra imediată arată că modelul „(0-9) +” este prezent într-un șir dat.

Excel VBA RegEx - Exemplul # 2

Aici, veți vedea cum puteți înlocui șirul unu cu altul folosind RegEx.Replace.

Urmați pașii de mai jos pentru a utiliza VBA RegEx.

Pasul 1: Definiți o nouă sub-șir pentru a crea o macrocomandă.

Cod:

 SubregEx_Ex2 () End Sub 

Pasul 2: La fel ca în primul exemplu, definiți două variabile RegEx ca un obiect care poate reține valoarea obiectului RegEx și Str, care va păstra valoarea șirului pe care îl veți defini.

Cod:

 SubregEx_Ex2 () Dim RegEx ca obiect, Str ca șir de cap 

Pasul 3: Definiți obiectul RegEx și setați-l pe variabila RegEx folosind funcția CreateObject.

Cod:

 SubregEx_Ex2 () Dim RegEx ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") End Sub 

Pasul 4: Introduceți modelul pe care doriți să îl înlocuiți folosind funcția .Pattern.

Cod:

 SubregEx_Ex2 () Dim RegEx ca obiect, Str ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123" End With End Sub 

Pasul 5: Utilizați .GLOBAL = TRUE care dacă TRUE permite înlocuirea tuturor modelelor de potrivire dintr-un șir dat. Dacă FALSE înlocuiește doar primul model de potrivire.

Cod:

 SubregEx_Ex2 () Dim RegEx ca obiect, Str ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123" .Global = True "Dacă FALSE, înlocuiește doar primul șir care se potrivește" End cu End Sub 

Pasul 6: După terminare, definiți șirul cu care doriți să se potrivească și înlocuiți modelul cu.

Cod:

 Sub RegEx_Ex2 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123" .Global = Adevărat "Dacă FALSE, înlocuiește doar primul șir care se potrivește" Se termină cu Str = "123-654-000-APY-123-XYZ-888" Sub 

Pasul 6: Folosiți RegEx.Replace pentru a înlocui valoarea modelului din șirul dat cu alt text.

Cod:

 Sub RegEx_Ex2 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123" .Global = Adevărat "Dacă FALSE, înlocuiește doar primul șir care se potrivește" Se termină cu Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Înlocuit") End Sub 

Aici, am dorit ca modelul „123” să fie înlocuit cu o altă bucată de coardă. RegEx.Replace permite înlocuirea valorii modelului cu bucata de șir (am definit „Înlocuit”). Vă rugăm să aruncați o privire și .Global = ADEVĂRAT. Ceea ce este o declarație condiționată. Dacă Global = TRUE, funcția Înlocuire înlocuiește toate modelele de potrivire cu celelalte șiruri. Dacă GLOBAL = FALSE, funcția Înlocuire înlocuiește doar primul model de potrivire și restul sunt neglijate.

Pasul 7: Apăsați butonul Run sau F5 pentru a rula acest cod și vedeți ieșirea în fereastra de ieșire imediată.

Excel VBA RegEx - Exemplul # 3

Aici, veți vedea cum puteți găsi toate modelele potrivite într-un șir folosind RegEx.Execute.

Urmați pașii de mai jos pentru a utiliza Excel VBA RegEx.

Pasul 1: Definiți o nouă sub-procedură pentru a adăuga macrocomanda.

Cod:

 SubregEx_Ex3 () End Sub 

Pasul 2: Urmați pașii la fel ca în cele două exemple anterioare pentru a defini o expresie obișnuită și o variabilă care poate reține valoarea șirului.

Cod:

 SubregEx_Ex3 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") End Sub 

Pasul 3: Introduceți un model pe care doriți să îl executați și să îl potriviți în șirul dat.

Cod:

 SubregEx_Ex3 () Dim RegEx ca obiect, Str ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123-XYZ" Se termină cu End Sub 

Pasul 4: Utilizați .GLOBAL = TRUE pentru ca toate meciurile să fie capturate în șirul dat.

Cod:

 SubregEx_Ex3 () Dim RegEx ca obiect, Str ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123-XYZ" .Global = True End cu End Sub 

Pasul 5: Definiți un șir după End With sub care trebuie să folosiți Execute și să găsiți toate modelele de potrivire.

Cod:

 Sub RegEx_Ex3 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Sub 

Pasul 6: Acum, utilizați Execute pe variabila numită șir pentru a afla toate potrivirile asociate cu un model dat.

Cod:

 Sub RegEx_Ex3 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Set meciuri = RegEx.Execute (Str) Sub final 

Pasul 7: Folosiți Pentru buclă pentru a imprima valoarea tuturor modelelor potrivite în fereastra de ieșire imediată.

Cod:

 Sub RegEx_Ex3 () Dim RegEx Ca obiect, Str Ca șir de seturi RegEx = CreateObject ("VBScript.RegExp") cu RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Set meciuri = RegEx.Execute (Str) pentru fiecare meci În meciuri Debug.Print Match.Value Următorul meci Final End Sub 

Pasul 8: Rulați acest cod apăsând pe F5 sau pe butonul Rulați și vedeți ieșirea sub fereastra de ieșire imediată.

Acest cod tipărește tot numărul de potriviri pentru modelul definit.

Lucruri de amintit

  • VBA Regular Expression poate fi utilizat doar pentru a afla șirurile. Evident, pentru valorile numerice, nu avem nevoie de o astfel de funcție. Toate valorile numerice luate în considerare în fiecare dintre cele trei exemple de mai sus sunt de fapt definite ca șir.
  • Se presupune că Excel VBA RegEx este folosit pentru manipularea șirurilor ori de câte ori există date mari. Nefolosirea VBA RegEx reduce eficiența programului.
  • VBA RegEx nu reușește atunci când există scenarii în care un model repetă n număr de ori sau infinit de ori.

Articole recomandate

Acesta a fost un ghid pentru VBA RegEx. Aici am discutat despre cum să utilizăm Excel VBA RegEx împreună cu câteva exemple practice și șablonul excel descărcabil. De asemenea, puteți parcurge și alte articole sugerate -

  1. Cum se utilizează Înlocuirea VBA în Excel?
  2. Folosind Insert Comment in Excel
  3. Crearea VBA TIMER în Excel
  4. Formula IF cuibărită în Excel

Categorie: