VBA RegEx

VBA RegEx “Regular Expression” je vrlo koristan u svijetu programiranja koji se može koristiti za provjeru unosa web stranica, pretraživanje uzoraka riječi u velikom nizu / tekstu, za pretraživanje i zamjenu niza.

Većina nas koristi FIND, SUBSTITUTE, LEFT, Right, zajedno s MID funkcijama za manipulaciju nizom u programu Microsoft Excel, zar ne? Međutim, ove funkcije imaju svoja ograničenja koja se ne mogu široko koristiti. Poznavanje VBA regularnih izraza uštedjet će vam puno vremena u svakodnevnom životu. Regularni izrazi su u VBA kratki kao "RegEx" (ili Regex). U ovom ćemo udžbeniku pogledati neke od RegEx-a uz njihovu upotrebu.

Možete koristiti VBA RegEx objekt koji je već stvoren u Microsoft VBScript knjižici regularnih izraza. Možete upravljati ovom bibliotekom klikom na Alati - Reference - Microsoft VBScript regularni izrazi.

Također možete stvoriti RegEx objekt pomoću CreateObject funkcije u VBA. Čini se prikladnijim načinom jer se u tom slučaju ne morate uvijek pozivati ​​na VBScript knjižicu regularnih izraza.

Pogledajte kôd u nastavku:

 Dim regex kao skup objekta regex = CreateObject ("VBScript.RegExp") 

Ovaj će vam kôd omogućiti stvaranje i pristup RegEx objektima u vašoj makronaredbi. Osobno mi je draži ovaj način nad prvim zbog njegove krutosti.

Funkcija RegEx omogućuje manipuliranje sljedećim u dugom nizu.

  • Divlje kartice poput *, ? itd
  • Grupirani izrazi zajedno s divljim kartama.

RegEx ima ispod parametara / svojstava:

  1. Uzorak - obrazac definiran u RegExu na kojem želite raditi operacije.
  2. IgnoreCase - Zanemarite velika slova (Caps / Non-Caps su isti u nizu).
  3. Global - Omogućuje pronalaženje svih mogućih podudaranja ako je postavljeno na TRUE. Ako je postavljeno kao FALSE, ono će naći samo prvo podudaranje.
  4. MultiLine - Omogućuje podudaranje uzorka u nizu koji se širi duž više linija.

RegEx olakšava sljedeće tri operacije:

  • Test - Testira je li navedeni uzorak prisutan u nizu ili ne. Ako je prisutan, vraća se TRUE, u suprotnom FALSE.
  • Zamijeni - zamjenjuje izvorni uzorak drugim.
  • Execute - Vraća sve pretraživane podudarne uzorke.

Kako se koristi Excel VBA RegEx?

Naučit ćemo kako koristiti Excel VBA Regular Expression s nekoliko primjera.

Možete preuzeti ovaj VBA RegEx Excel predložak ovdje - VBA RegEx Excel predložak

Excel VBA RegEx - Primjer # 1

Ovdje ćete provjeriti je li spomenuti uzorak prisutan u tekstu pomoću RegEx.Test.

Slijedite dolje navedene korake za upotrebu VBA RegEx-a.

Korak 1: Definirajte novi podpostupak za stvaranje makronaredbe.

Kodirati:

 Sub RegEx_Ex1 () Kraj Sub 

Korak 2: Definirajte dvije varijable RegEx kao objekt koji se može koristiti za stvaranje RegEx objekta, a Str kao niz.

Kodirati:

 Sub RegEx_Ex1 () Dim RegEx kao objekt, Str kao String End Sub 

Korak 3: Stvorite objekt RegEx pomoću funkcije CreateObject.

Kodirati:

 Sub RegEx_Ex1 () Dim RegEx kao objekt, Str kao niz string RegEx = CreateObject ("VBScript.RegExp") Kraj Sub 

Korak 4: Dodajte obrazac za testiranje s RegEx funkcijom.

Kodirati:

 Sub RegEx_Ex1 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "(0-9) +" End with End Sub 

Korak 5: Definirajte niz unutar kojeg trebamo provjeriti zadani uzorak.

Kodirati:

 Sub RegEx_Ex1 () Dim RegEx kao objekt, Str kao string string Set RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "(0-9) +" End with Str = "Moj bicikl broj je MH-12 PP- 6145 "Kraj Sub 

Korak 6: Upotrijebite RegEx.Test za provjeru da li je navedeni uzorak prisutan u varijabli nazvanoj Str. Također koristite Debug.Print za ispis rezultata (True ili False) na neposrednom prozoru.

Kodirati:

 Sub RegEx_Ex1 () Dim RegEx kao objekt, Str kao string string Set RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "(0-9) +" End with Str = "Moj bicikl broj je MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) Kraj Sub 

Korak 7: Pritisnite tipku F5 ili Run da biste pokrenuli kod i pogledali izlaz. (Pritisnite CTRL + G za otvaranje neposrednog prozora)

Ovdje smo stvorili RegEx objekt. Zatim smo pomoću VBA RegEx-a provjerili je li dan uzorak ("(0-9) +") koji uključuje sve brojeve / kombinaciju brojeva od 0 do 9 u nizu definiranom pomoću RegEx.Test ( Str). Izlaz "True" ispod neposrednog prozora pokazuje da je u određenom nizu prisutan uzorak "(0-9) +".

Excel VBA RegEx - Primjer # 2

Ovdje ćete vidjeti kako jedan niz možete zamijeniti drugim koristeći RegEx.Replace.

Slijedite dolje navedene korake za upotrebu VBA RegEx-a.

1. korak: definirajte novi pod string da biste stvorili makronaredbu.

Kodirati:

 Sub RegEx_Ex2 () Kraj Sub 

Korak 2: Isto kao u prvom primjeru, definirajte dvije varijable RegEx kao objekt koji može sadržavati vrijednost objekta RegEx i Str koji će sadržavati vrijednost niza koji ćete definirati.

Kodirati:

 Sub RegEx_Ex2 () Dim RegEx kao objekt, Str kao String End Sub 

Korak 3: Definirajte RegEx objekt i postavite ga na RegEx varijablu pomoću funkcije CreateObject.

Kodirati:

 Sub RegEx_Ex2 () Dim RegEx kao objekt, Str kao niz string RegEx = CreateObject ("VBScript.RegExp") Kraj Sub 

Korak 4: Umetnite uzorak koji želite zamijeniti pomoću .Pattern funkcije.

Kodirati:

 Sub RegEx_Ex2 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123" Završi s krajnjim Sub 

Korak 5: Koristite .GLOBAL = TRUE koji ako TRUE dopušta zamjenu svih odgovarajućih obrazaca u određenom nizu. Ako FALSE zamjenjuje samo prvi odgovarajući obrazac.

Kodirati:

 Pod RegEx_Ex2 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123" .Global = True 'Ako je FALSE, zamjenjuje samo prvi odgovarajući niz' End with End Sub 

Korak 6: Nakon kraja sa, definirajte niz s kojim želite uskladiti i zamijenite uzorak.

Kodirati:

 Sub RegEx_Ex2 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123" .Global = True 'Ako je FALSE, zamjenjuje samo prvi odgovarajući niz' End with Str = "123-654-000-APY-123-XYZ-888" Kraj Sub 

Korak 6: Upotrijebite RegEx.Replace da vrijednost obrasca u danom nizu zamijenite drugim tekstom.

Kodirati:

 Sub RegEx_Ex2 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123" .Global = True 'Ako je FALSE, zamjenjuje samo prvi odgovarajući niz' End with Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Zamijenjeno") Kraj Sub 

Ovdje smo htjeli da uzorak „123” zamijeni nekim drugim komadićem niza. RegEx.Replace omogućuje zamjenu vrijednosti uzorka s komadom niza (definirali smo "Zamijenjeno"). Molimo pogledajte i .Global = TRUE. Što je uvjetna izjava. Ako je Global = TRUE, funkcija Zamijeni zamjenjuje sve podudarajuće uzorke drugim nizom. Ako je GLOBAL = FALSE, funkcija Zamijeni zamjenjuje samo prvi odgovarajući obrazac, a ostali su zanemareni.

Korak 7: Pritisnite tipku Run ili F5 da biste pokrenuli ovaj kod i pogledali izlaz u prozoru neposrednog izlaza.

Excel VBA RegEx - Primjer # 3

Ovdje ćete vidjeti kako možete pronaći sve odgovarajuće obrasce u nizu pomoću RegEx.Execute.

Slijedite dolje navedene korake za upotrebu Excela VBA RegEx.

Korak 1: Definirajte novi podpostupak za dodavanje makronaredbe.

Kodirati:

 Sub RegEx_Ex3 () Kraj Sub 

Korak 2: Slijedite korake iste kao u prethodna dva primjera za definiranje regularnog izraza i varijable koja može sadržavati vrijednost niza.

Kodirati:

 Sub RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz string RegEx = CreateObject ("VBScript.RegExp") Kraj Sub 

Korak 3: Umetnite uzorak koji želite da bude izveden i podudarite u zadanom nizu.

Kodirati:

 Sub RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123-XYZ" Završi s End Sub 

Korak 4: Upotrijebite .GLOBAL = TRUE kako bi se sva podudaranja snimila u zadanom nizu.

Kodirati:

 Sub RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123-XYZ" .Global = True End sa krajnjim Sub 

Korak 5: Definirajte niz nakon kraja sa kojim trebate koristiti Execute i pronaći sve odgovarajuće obrasce.

Kodirati:

 Pod RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz stringova RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Kraj Sub 

Korak 6: Sada upotrijebite Execute na varijabli imenovanoj nizu da biste saznali sva podudaranja povezana s danim uzorkom.

Kodirati:

 Pod RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz stringova RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Postavi podudaranje = RegEx.Execute (Str) End Sub 

Korak 7: Upotrijebite za petlju za ispis vrijednosti svih podudarnih uzoraka u neposredni izlazni prozor.

Kodirati:

 Sub RegEx_Ex3 () Dim RegEx kao objekt, Str kao niz stringa RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Postavi podudaranje = RegEx.Execute (Str) za svako podudaranje u utakmicama Debug.Print Match.Value Sljedeća utakmica End Sub 

Korak 8: Pokrenite ovaj kôd pritiskom na F5 ili Run gumb i pogledajte izlaz u neposrednom izlaznom prozoru.

Ovaj kôd ispisuje sav broj podudaranja za uzorak koji je definiran.

Stvari koje treba zapamtiti

  • VBA Regular Expression može se koristiti samo za pronalaženje struna. Očito za numeričke vrijednosti ne treba nam takva funkcija. Sve numeričke vrijednosti koje se razmatraju u sva tri gore navedena primjera zapravo su definirane kao niz.
  • Excel VBA RegEx trebao bi se koristiti za nizanje manipulacija kad god postoje veliki podaci. Ako se ne koristi VBA RegEx, smanjuje se učinkovitost programa.
  • VBA RegEx ne uspije kada postoje scenariji u kojima se uzorak ponavlja n broj puta ili beskonačno vremena u tu svrhu.

Preporučeni članci

Ovo je vodič za VBA RegEx. Ovdje smo raspravljali o tome kako koristiti Excel VBA RegEx zajedno s nekoliko praktičnih primjera i preuzeti Excel predložak. Možete i pregledati naše druge predložene članke -

  1. Kako se koristi Excel VBA u Excelu?
  2. Korištenje Insert Comment u Excelu
  3. Izrada VBA TIMER-a u Excelu
  4. Ugrađena IF formula u Excelu

Kategorija: