VBA RegEx

VBA RegEx “Regular Expression” je zelo uporaben v programskem svetu, ki ga lahko uporabimo za preverjanje vnosa spletnega mesta, iskanje besednih vzorcev v velikem nizu / besedilu, za iskanje in nadomeščanje nizov

Večina nas uporablja FIND, SUBSTITUTE, LEVO, DESNO in funkcije MID za manipulacijo z vrsticami v programu Microsoft Excel, kajne? Vendar imajo te funkcije svoje omejitve, ki jih ni mogoče široko uporabljati. Poznavanje VBA regularnih izrazov vam bo prihranilo veliko časa v vašem vsakodnevnem življenju. Redni izrazi so v VBA oblikovani kot „RegEx“ (ali Regex). V tej vadnici si bomo ogledali nekatere RegEx z njihovo uporabo.

Lahko uporabite objekt VBA RegEx, ki je že ustvarjen v Microsoftovi knjižnici regularnih izrazov VBScript. Po tej knjižnici se lahko pomikate s klikom na Orodja - Reference - Microsoft VBScript Regular Expressions.

Predmet RegEx lahko ustvarite tudi s funkcijo CreateObject v VBA. Zdi se bolj priročen način, saj vam v tem primeru ni treba vedno sklicevati na knjižnico VBScript Regular Expressions.

Glej kodo spodaj:

 Dim regex kot nastavitev predmeta regex = CreateObject ("VBScript.RegExp") 

Ta koda vam bo omogočila ustvarjanje in dostop do RegEx predmetov v vašem makro. Osebno mi je bolj všeč ta način kot prvi zaradi njegove togosti.

Funkcija RegEx omogoča manipuliranje z naslednjim v dolgem nizu.

  • Divje karte kot *, ? itd.
  • Združeni izrazi skupaj z nadomestnimi kartami.

RegEx ima spodaj parametre / lastnosti:

  1. Vzorec - Vzorec, opredeljen v RegExu, na katerem želite izvajati operacije.
  2. IgnoreCase - Prezri črko črk (Caps / Non-Caps so enake v nizu).
  3. Globalno - Omogoča iskanje vseh možnih ujemanj, če je nastavljeno na TRUE. Če je nastavljeno kot FALSE, poišče samo prvo ujemanje.
  4. MultiLine - Omogoča ujemanje vzorca v nizu, ki je razporejen po več vrsticah.

RegEx omogoča naslednje tri operacije:

  • Test - Preizkusi, ali je omenjeni vzorec prisoten v nizu ali ne. Če je prisoten, vrne TRUE, sicer LAHKO.
  • Zamenjaj - zamenja originalni vzorec z drugim.
  • Execute - Vrne vse iskane vzorce.

Kako uporabljati Excel VBA RegEx?

Spoznali bomo, kako uporabljati Excel VBA Regular Expression z nekaj primeri.

To predlogo VBA RegEx Excel lahko prenesete tukaj - Predloga VBA RegEx Excel

Excel VBA RegEx - primer 1

Tu boste preverili, ali je omenjeni vzorec v besedilu prisoten z uporabo RegEx.Test.

Sledite spodnjim korakom za uporabo VBA RegEx.

1. korak: Določite nov podproces za ustvarjanje makra.

Koda:

 Sub RegEx_Ex1 () End Sub 

2. korak: Določite dve spremenljivki RegEx kot objekt, ki ga lahko uporabite za ustvarjanje predmeta RegEx in Str kot niz.

Koda:

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

3. korak: Ustvarite objekt RegEx s funkcijo CreateObject.

Koda:

 Sub RegEx_Ex1 () Dim RegEx kot predmet, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. korak: Dodajte vzorec, ki ga želite preizkusiti s funkcijo RegEx.

Koda:

 Pod RegEx_Ex1 () Dim RegEx kot predmet, Str kot niz nastavljen RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "(0-9) +" End with End Sub 

5. korak: Določite niz, znotraj katerega moramo preveriti dani vzorec.

Koda:

 Pod RegEx_Ex1 () Dim RegEx kot predmet, Str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "(0-9) +" End with Str = "Moja številka kolesa je MH-12 PP- 6145 "Končni pod 

6. korak: Uporabite RegEx.Test, da preverite, ali je dani vzorec znotraj spremenljivke z imenom Str. Uporabite tudi Debug.Print, da rezultat izpišete (True ali False) v neposrednem oknu.

Koda:

 Pod RegEx_Ex1 () Dim RegEx kot predmet, Str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "(0-9) +" End with Str = "Moja številka kolesa je MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

7. korak: Pritisnite tipko F5 ali Run in zaženite kodo in si oglejte izhod. (Pritisnite CTRL + G, da odprete takojšnje okno)

Tu smo ustvarili objekt RegEx. Nato smo z VBA RegEx preverili, ali je v nizu, določenem s pomočjo RegEx.Test, prisoten dani vzorec ("(0-9) +"), ki vključuje vsa števila / kombinacije števil od 0 do 9 ( Str). Izhod "True" v neposrednem oknu kaže, da je vzorec "(0-9) +" v danem nizu.

Excel VBA RegEx - primer # 2

Tukaj boste videli, kako lahko en niz zamenjate z drugim z RegEx.Replace.

Sledite spodnjim korakom za uporabo VBA RegEx.

1. korak: Določite nov podvrstico za ustvarjanje makra.

Koda:

 Sub RegEx_Ex2 () End Sub 

2. korak: Enako kot v prvem primeru definirajte dve spremenljivki RegEx kot objekt, ki lahko vsebuje vrednost predmeta RegEx in Str, ki bo vseboval vrednost niza, ki ga boste definirali.

Koda:

 Sub RegEx_Ex2 () Dim RegEx kot predmet, Str kot String End Sub 

3. korak: Določite objekt RegEx in ga nastavite na spremenljivko RegEx s funkcijo CreateObject.

Koda:

 Sub RegEx_Ex2 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. korak: Vstavite vzorec, ki ga želite zamenjati s funkcijo .Pattern.

Koda:

 Pod RegEx_Ex2 () Dim RegEx kot predmet, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123" konec z konec Sub 

5. korak: Uporabite .GLOBAL = TRUE, ki, če TRUE dovoli zamenjavo vseh ujemajočih se vzorcev v danem nizu. Če FALSE nadomesti samo prvi ujemajoči se vzorec.

Koda:

 Pod RegEx_Ex2 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123" .Global = True 'Če je FALSE, zamenja prvi prvi ujemajoči niz' End with End Sub 

6. korak: Ko končate z, določite niz, s katerim se želite ujemati, in nadomestite vzorec.

Koda:

 Pod RegEx_Ex2 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123" .Global = True 'Če je FALSE, zamenja prvi prvi ujemajoči niz' End with Str = "123-654-000-APY-123-XYZ-888" Konec Pod 

6. korak: Uporabite RegEx.Replace, da vrednost vzorca v danem nizu zamenjate z drugim besedilom.

Koda:

 Pod RegEx_Ex2 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123" .Global = True 'Če je FALSE, zamenja prvi prvi ujemajoči niz' End with Str = Odpravljanje napak "123-654-000-APY-123-XYZ-888". Natisni RegEx.Replace (Str, "zamenjana") End Sub 

Tu smo želeli, da bi vzorec "123" zamenjal kakšen drug kos vrvice. RegEx.Replace omogoča nadomestitev vrednosti vzorca s kosom niza (definirali smo "nadomeščen"). Oglejte si tudi .Global = TRUE. Kar je pogojna izjava. Če je Global = TRUE, funkcija Zamenjaj nadomesti vse ujemajoče se vzorce z drugim nizom. Če je GLOBAL = FALSE, funkcija Zamenjava nadomesti samo prvi ujemajoči se vzorec, ostale pa so zapostavljene.

7. korak: Pritisnite gumb Zaženi ali F5, da zaženete to kodo in si ogledate izhod v oknu s takojšnjim izhodom.

Excel VBA RegEx - primer # 3

Tu boste videli, kako lahko z RegEx.Execute najdete vse ujemajoče se vzorce v nizu.

Za uporabo Excel VBA RegEx sledite spodnjim korakom.

1. korak: Določite nov podproces za dodajanje makra.

Koda:

 Sub RegEx_Ex3 () End Sub 

Korak 2: Sledite korakom, enakim kot prejšnja dva primera, da določite regularni izraz in spremenljivko, ki lahko vsebuje vrednost niza.

Koda:

 Sub RegEx_Ex3 () Dim RegEx kot predmet, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") End Sub 

3. korak: V dani niz vstavite vzorec, ki ga želite izvesti in se ujemate.

Koda:

 Pod RegEx_Ex3 () Dim RegEx kot objekt, Str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123-XYZ" End with End Sub 

4. korak: Uporabite .GLOBAL = TRUE, da bodo vsa ujemanja zajeta v danem nizu.

Koda:

 Pod RegEx_Ex3 () Dim RegEx kot predmet, Str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123-XYZ" .Global = True End s koncem Sub 

5. korak: Določite niz po koncu, s katerim morate uporabiti Execute in poiskati vse ujemajoče se vzorce.

Koda:

 Pod RegEx_Ex3 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123-XYZ" .Global = True End with Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Konec pod 

6. korak: Zdaj uporabite Execute v spremenljivki z imenom string, da ugotovite vsa ujemanja, povezana z določenim vzorcem.

Koda:

 Pod RegEx_Ex3 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123-XYZ" .Global = True End with Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Nastavi ujemanje = RegEx.Execute (Str) End Sub 

7. korak: Z uporabo zanke natisnite vrednost vseh ujemajočih se vzorcev v neposredno izhodno okno.

Koda:

 Pod RegEx_Ex3 () Dim RegEx kot objekt, str kot niz nizov RegEx = CreateObject ("VBScript.RegExp") z RegEx .Pattern = "123-XYZ" .Global = True End with Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Nastavite tekme = RegEx.Execute (Str) za vsako tekmo v tekmah Debug.Print Match.Value Naslednja tekma End Sub 

8. korak: Zaženite to kodo s pritiskom na tipko F5 ali zaženite in v neposrednem izhodnem oknu si oglejte izhod.

Ta koda natisne vse število zadetkov za določen vzorec.

Stvari, ki jih je treba zapomniti

  • VBA Regular Expression lahko uporabite le za iskanje strun. Očitno za numerične vrednosti take funkcije ne potrebujemo. Vse numerične vrednosti, obravnavane v vsakem od treh zgornjih primerov, so dejansko definirane kot niz.
  • Excel VBA RegEx naj bi se uporabljal za manipulacijo z nizi, kadar je veliko podatkov. Če ne uporabljate VBA RegEx, zmanjšuje učinkovitost programa.
  • VBA RegEx ne uspe, kadar obstajajo scenariji, v katerih se vzorec ponavlja n-krat ali neskončno krat.

Priporočeni članki

To je vodnik za VBA RegEx. Tu smo razpravljali o tem, kako uporabljati Excel VBA RegEx, skupaj z nekaj praktičnimi primeri in naloženo predlogo Excela. Ogledate si lahko tudi druge naše predlagane članke -

  1. Kako uporabljati zamenjavo VBA v Excelu?
  2. Uporaba Vstavi komentar v Excelu
  3. Ustvarjanje VBA TIMER-a v Excelu
  4. Vstavljena IF formula v Excelu

Kategorija: