VBA RegEx

VBA RegEx “Regulaarväljendus” on programmeerimismaailmas väga kasulik, seda saab kasutada veebisaidi sisendi valideerimiseks, suures stringi / tekstisõnaliste sõnade otsimiseks, stringi otsimiseks ja asendamiseks.

Enamik meist kasutab Microsoft Excelis stringi käsitsemiseks FIND, SUBSTITUTE, LEFT, PAREM ja MID-funktsioone, kas pole? Nendel funktsioonidel on siiski oma piirangud, mida ei saa laialdaselt kasutada. VBA regulaarväljendite tundmine säästab teie igapäevases elus palju aega. Regulaarsed avaldised on VBA-s lühikese kujuga kui „RegEx” (või Regex). Selles õpetuses vaatleme mõnda RegExi nende kasutamisest.

Võite kasutada objekti VBA RegEx, mis on juba loodud Microsofti VBScript Regular Expressions teegis. Selles raamatukogus saate navigeerida, klõpsates nuppu Tööriistad - Viide - Microsoft VBScripti tavalised avaldised.

Samuti saate luua RegEx-i objekti, kasutades VBA funktsiooni CreateObject . See tundub mugavam viis, kuna te ei pea sel juhul alati viitama VBScripti regulaarväljendite teeki.

Vaadake allolevat koodi:

 Regexi timmimine objektikomplektina regex = CreateObject ("VBScript.RegExp") 

See kood võimaldab teil oma makrol luua ja pääseda juurde RegExi objektidele. Mina isiklikult eelistan seda jäikuse tõttu esimest korda üle esimese.

RegEx funktsioon võimaldab pika stringi abil manipuleerida järgnevaga.

  • Looduskaardid nagu *, ? jne.
  • Rühmitatud väljendid koos looduslike kaartidega.

RegExil on allpool parameetreid / omadusi:

  1. Muster - RegExis määratletud muster, millega soovite toiminguid teha.
  2. IgnoreCase - tähtede suurtähte eiratakse (suurtähed / mitte-suurtähed on stringis samad).
  3. Globaalne - võimaldab leida kõik võimalikud vasted, kui see on seatud väärtusele TRUE. Kui seatakse väärtuseks VABA, leiab see ainult esimese vaste.
  4. MultiLine - võimaldab mustri sobitamist stringides, mis on jaotatud mitmele reale.

RegEx hõlbustab järgmist kolme toimingut:

  • Test - testib, kas mainitud muster on stringis või mitte. Kui kohal tagastab väärtuse TRUE, siis FALSE.
  • Asenda - asendab algse mustri teisega.
  • Käivita - tagastab kõik otsitud sobivad mustrid.

Kuidas kasutada Excel VBA RegExit?

Õpime kasutama väheste näidetega Excel VBA regulaarväljendust.

Selle VBA RegEx Exceli malli saate alla laadida siit - VBA RegEx Exceli mall

Excel VBA RegEx - näide # 1

Siin saate RegEx.Testi abil kontrollida, kas mainitud muster on tekstis olemas.

VBA RegExi kasutamiseks toimige järgmiselt.

1. samm: määratlege makro loomiseks uus alamprotseduur.

Kood:

 Alam RegEx_Ex1 () Lõpp Alam 

2. samm: määratlege objektina kaks muutujat RegEx, mida saab kasutada RegExi objekti loomiseks ja Str stringina.

Kood:

 Alam RegEx_Ex1 () Dim RegEx kui objekt, Str kui string End Sub 

3. samm: looge RegEx-i objekt, kasutades funktsiooni CreateObject.

Kood:

 Alam RegEx_Ex1 () Tühjenda RegEx kui objekt, Str Nagu string Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. samm: lisage RegExi funktsiooniga testitav muster.

Kood:

 Alam RegEx_Ex1 () Tühjenda RegEx kui objekt, Str kui stringikomplekt RegEx = CreateObject ("VBScript.RegExp") koos RegEx .Pattern = "(0-9) +" Lõpp koos alaosaga 

5. samm: määrake string, mille sees peame antud mustrit kontrollima.

Kood:

 Sub RegEx_Ex1 () Dim RegEx objektina, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With Str = "Minu ratta number on MH-12 PP- 6145 "Lõpp-sub 

6. samm: kasutage RegEx.Testi, et testida, kas antud muster on muutuja nimega Str. Kasutage ka tulemuste (õige või vale) kohese akna printimiseks nuppu Debug.Print.

Kood:

 Sub RegEx_Ex1 () Dim RegEx objektina, Str As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With Str = "Minu ratta number on MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

7. samm: koodi käivitamiseks ja väljundi nägemiseks klõpsake nuppu F5 või nuppu Käivita. (Vajutage klahvi CTRL + G, et avada kohene aken)

Oleme siin loonud RegExi objekti. Seejärel oleme VBA RegExi abil kontrollinud, kas antud muster (“(0-9) +”), mis sisaldab kõiki numbreid / numbrikombinatsiooni vahemikus 0 kuni 9, on RegEx.Testi abil määratletud stringi ( Str). Väljund “True” kohese akna all näitab, et muster “(0-9) +” on antud stringis olemas.

Excel VBA RegEx - näide nr 2

Siit näete, kuidas saate ühe stringi asendada teistega, kasutades RegEx.Replace.

VBA RegExi kasutamiseks toimige järgmiselt.

1. samm: määratlege makro loomiseks uus alamstring.

Kood:

 Alam RegEx_Ex2 () Lõpp Alam 

2. samm: määratlege nagu esimeses näites kaks muutujat RegEx objektina, mis hoiab RegExi objekti väärtust, ja Str, mis hoiab teie määratletud stringi väärtust.

Kood:

 Alam RegEx_Ex2 () Dim RegEx objektina, Str nagu string End Sub 

3. samm: määrake objekt RegEx ja seadke see muutuja RegEx abil, kasutades funktsiooni CreateObject.

Kood:

 Alam RegEx_Ex2 () Tühjenda RegEx kui objekt, Str Nagu string Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. samm. Sisestage muster, mille soovite asendada .Pattern funktsiooni abil.

Kood:

 Alam RegEx_Ex2 () Tühjenda RegEx kui objekt, Str nagu string Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" End With End Sub 

5. samm: kasutage .GLOBAL = TRUE, mis juhul kui TRUE lubab asendada kõik antud stringi sobivad mustrid. Kui FALSE asendab ainult esimest sobitusmustrit.

Kood:

 Alam RegEx_Ex2 () Tühjenda RegEx kui objekt, Str Nagu string Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True "Kui FALSE, asendab ainult esimest sobivat stringi" End With End Sub 

6. samm: pärast lõppu määrake string, mida soovite sobitada, ja asendage muster.

Kood:

 Alam RegEx_Ex2 () Tühjenda RegEx kui objekt, Str Nagu string Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True "Kui FALSE, asendab ainult esimest sobivat stringi" End With Str = "123-654-000-APY-123-XYZ-888" lõpp-alam 

6. samm: kasutage RegEx.Replace, et asendada antud stringi mustri väärtus teise tekstiga.

Kood:

 Alam RegEx_Ex2 () Tühjenda RegEx kui objekt, Str Nagu string Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "123" .Global = True "Kui FALSE, asendab ainult esimest sobivat stringi" End With Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Replaced") End Sub 

Siinkohal soovisime, et muster “123” asendataks mõne muu nööriga. RegEx.Replace võimaldab mustri väärtuse asendada nööritükiga (oleme määratlenud “Asendatud”). Vaadake palun ka .Global = TRUE. Mis on tingimuslik väide. Kui globaalne = TRUE, asendab funktsioon Asenda kõik sobivad mustrid teise stringi abil. Kui GLOBAL = FALSE, asendab funktsioon Asenda ainult esimese sobitusmustri ja ülejäänud ülejäänud jäetakse tähelepanuta.

7. samm: selle koodi käivitamiseks vajutage nuppu Käivita või F5, et näha väljundit kohese väljundi aknas.

Excel VBA RegEx - näide nr 3

Siit näete, kuidas leiate kõik stringile sobivad mustrid, kasutades RegEx.Execute.

Excel VBA RegExi kasutamiseks toimige järgmiselt.

1. samm: määratlege makro lisamiseks uus alamprotseduur.

Kood:

 Alam RegEx_Ex3 () Lõpp Alam 

2. samm. Regulaaravaldise ja muutuja määratlemiseks, mis võib hoida stringi väärtust, järgige samme, mis kahes eelmises näites.

Kood:

 Alam RegEx_Ex3 () Tühjenda RegEx kui objekt, Str nagu string Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

3. samm: sisestage muster, mida soovisite täita ja sobitada antud stringi.

Kood:

 Alam RegEx_Ex3 () Tühjenda RegEx kui objekt, Str kui stringikomplekt RegEx = CreateObject ("VBScript.RegExp") koos RegEx .Pattern = "123-XYZ" Lõpp koos alaosaga 

4. samm: kasutage .GLOBAL = TRUE, et kõik vasted jääksid antud stringi.

Kood:

 Alam RegEx_Ex3 () Tühjenda RegEx kui objekt, Str kui stringikomplekt RegEx = CreateObject ("VBScript.RegExp") koos RegEx .Pattern = "123-XYZ" .Global = True End With End Sub 

5. samm: määrake string pärast lõppu, mille all peate kasutama käsku Käivita ja leidma kõik sobivad mustrid.

Kood:

 Sub RegEx_Ex3 () Tühjenda RegEx objektina, 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 "lõpp-alam 

6. samm: kasutage muutuja nimelisel stringil käsku Käivita, et leida kõik antud mustriga seotud vasted.

Kood:

 Sub RegEx_Ex3 () Tühjenda RegEx objektina, 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 "Määra vasted = RegEx.Execute (Str) End Sub 

7. samm. Kasutage nuppu For loop, et printida kõigi vastavate mustrite väärtus vahetu väljundiaknasse.

Kood:

 Sub RegEx_Ex3 () Tühjenda RegEx objektina, 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 "Seadistage vasted = RegEx.Execute (Str) iga mängu jaoks matšides Debug.Print Match.Value Järgmine matš End Sub 

8. samm: käivitage see kood, vajutades F5 või käivitusnuppu ja vaadake väljundit kohese väljundiakna all.

See kood prindib kõik määratletud mustri vasted.

Asjad, mida meeles pidada

  • VBA regulaaravaldist saab kasutada ainult stringide väljaselgitamiseks. Ilmselt ei vaja me arvväärtuste jaoks sellist funktsiooni. Kõik numbrilised väärtused, mida käsitletakse kõigis kolmes näites, on tegelikult määratletud stringina.
  • Excel VBA RegExi peaks kasutama stringi käsitsemiseks, kui on palju andmeid. VBA RegExi mittekasutamine vähendab programmi tõhusust.
  • VBA RegEx ebaõnnestub, kui on olemas stsenaariumid, kus muster kordab sel eesmärgil n korda või lõpmatu arv kordi.

Soovitatavad artiklid

See on olnud VBA RegExi juhend. Siin arutasime, kuidas kasutada programmi Excel VBA RegEx koos mõne praktilise näite ja allalaaditava Exceli malliga. Võite vaadata ka meie teisi soovitatud artikleid -

  1. Kuidas kasutada VBA asendajat Excelis?
  2. Lisamise kommentaari kasutamine Excelis
  3. VBA-taimeri loomine Excelis
  4. Pesastatud IF-valem Excelis

Kategooria: