VBA RegEx

A VBA RegEx „Regular Expression” nagyon hasznos a programozási világban, amely felhasználható a weboldal bevitelének hitelesítésére, a szótípusok nagy szövegben / szövegben való keresésére, a szöveg keresésére és cseréjére.

Legtöbben FIND, SUBSTITUTE, LEFT, JOBB és MID függvényeket használunk a szövegszerkesztéshez a Microsoft Excelben, nem? Ezeknek a funkcióknak azonban vannak saját korlátai, amelyek nem használhatók széles körben. A VBA rendes kifejezésekkel kapcsolatos ismeretek sok időt takaríthatnak meg a mindennapi életben. A reguláris kifejezéseket a VBA-ban „RegEx” (vagy Regex) formátumban rövidítik. Ebben az oktatóanyagban áttekintjük néhány RegEx-et azok felhasználásával.

Használhatja a Microsoft VBScript Regular Expressions könyvtárban már létrehozott VBA RegEx objektumot. A könyvtárban navigálhat az Eszközök - Referencia - Microsoft VBScript Regular Expressions elemre kattintva .

A VBA CreateObject funkciójával létrehozhat egy RegEx objektumot is. Kényelmesebbnek tűnik, mivel ebben az esetben nem mindig kell hivatkoznia a VBScript Regular Expressions könyvtárra.

Lásd az alábbi kódot:

 A regex tompítása objektumkészletként: regex = CreateObject ("VBScript.RegExp") 

Ez a kód lehetővé teszi a RegEx objektumok létrehozását és elérését a makróban. Személy szerint jobban kedvelem ezt az utat az elsővel szemben, merevsége miatt.

A RegEx funkció lehetővé teszi az alábbiak manipulálását hosszú karakterláncban.

  • Vadkártyák, mint *, ? stb.
  • Csoportosított kifejezések és vadkártyák.

A RegEx a következő paraméterekkel / tulajdonságokkal rendelkezik:

  1. Minta - A RegEx-ben meghatározott minta, amelyen műveleteket kíván végrehajtani.
  2. IgnoreCase - Figyelmen kívül hagyja a betűk betűit (a nagybetűs / nem nagybetű megegyezik a karakterláncban).
  3. Globális - lehetővé teszi az összes lehetséges találat megtalálását, ha az igaz (TRUE). Ha FALSE értékre állítja, akkor csak az első mérkőzést találja.
  4. MultiLine - Lehetővé teszi a minta illesztését egy sorban, amely több vonal mentén oszlik el.

A RegEx megkönnyíti az alábbi három műveletet:

  • Teszt - teszteli, hogy az említett minta jelen van-e a karakterláncban, vagy sem. Ha jelen van, az IGAZ, a HAMIS érték.
  • Csere - Az eredeti mintát a másikra cseréli.
  • Végrehajtás - Visszaadja a keresett megfelelő mintákat.

Hogyan kell használni az Excel VBA RegEx-et?

Néhány példával megtanuljuk, hogyan kell használni az Excel VBA Regular Expression alkalmazást.

Itt letöltheti ezt a VBA RegEx Excel sablont - VBA RegEx Excel sablon

Excel VBA RegEx - 1. példa

Itt a RegEx.Test segítségével ellenőrizheti, hogy az említett minta megtalálható-e a szövegben.

A VBA RegEx használatához kövesse az alábbi lépéseket.

1. lépés: Adjon meg egy új alapelvet a makró létrehozásához.

Kód:

 RegEx_Ex1 () Sub 

2. lépés: Adjon meg két változót a RegEx objektumként, amely felhasználható a RegEx objektum létrehozására és az Str karakterláncként.

Kód:

 Sub RegEx_Ex1 () Dim RegEx Object, Str As String End Sub 

3. lépés: Hozzon létre RegEx objektumot a CreateObject funkció használatával.

Kód:

 Sub RegEx_Ex1 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. lépés: Adja hozzá a RegEx funkcióval tesztelni kívánt mintát.

Kód:

 Sub RegEx_Ex1 () Dim RegEx Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "(0-9) +" End with End Sub 

5. lépés: Adja meg a karakterláncot, amelyen belül ellenőriznie kell az adott mintát.

Kód:

 Sub RegEx_Ex1 () Dim RegEx objektumként, Str As String Set RegEx = CreateObject ("VBScript.RegExp") with RegEx .Pattern = "(0-9) +" End with Str = "Saját kerékpár száma MH-12 PP- 6145 "Sub vége 

6. lépés: A RegEx.Test segítségével ellenőrizze, hogy az adott minta jelen van-e a Str. A Debug.Print használatával nyomtassa ki az eredményt (igaz vagy hamis) a közvetlen ablakra.

Kód:

 Sub RegEx_Ex1 () Dim RegEx objektumként, Str As String Set RegEx = CreateObject ("VBScript.RegExp") with RegEx .Pattern = "(0-9) +" End with Str = "Saját kerékpár száma MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

7. lépés: Nyomja meg az F5 vagy a Futtatás gombot a kód futtatásához és a kimenet megtekintéséhez. (Nyomja meg a CTRL + G gombot az azonnali ablak megnyitásához)

Itt hoztak létre egy RegEx objektumot. Ezután a VBA RegEx-szel megvizsgáltuk, hogy a RegEx.Test ( Str). Az „igaz” kimenet az azonnali ablak alatt azt mutatja, hogy a „(0-9) +” minta jelen van egy adott karakterláncban.

Excel VBA RegEx - 2. példa

Itt láthatja, hogy hogyan cserélheti le az egyik karakterláncot másra a RegEx.Replace segítségével.

A VBA RegEx használatához kövesse az alábbi lépéseket.

1. lépés: Adjon meg egy új alhúrot egy makró létrehozásához.

Kód:

 RegEx_Ex2 () Sub 

2. lépés: Ugyanúgy, mint az első példában, határozza meg a RegEx két változót olyan objektumként, amely megtarthatja a RegEx objektum értékét, és az Str, amely megtartja a megadott karakterlánc értékét.

Kód:

 Sub RegEx_Ex2 () Dim RegEx Object, Str As String End Sub 

3. lépés: Adja meg a RegEx objektumot, és állítsa a RegEx változóra a CreateObject funkció használatával.

Kód:

 Sub RegEx_Ex2 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

4. lépés: Helyezze be a cserélni kívánt mintát .Pattern funkcióval.

Kód:

 Sub RegEx_Ex2 () Dim RegEx Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123" Végén Sub 

5. lépés: Használja a .GLOBAL = TRUE-t, amely ha TRUE-ban lehetővé teszi az egyező karakterlánc összes illesztési mintájának cseréjét. Ha a FALSE csak az első illesztési mintát váltja ki.

Kód:

 Sub RegEx_Ex2 () Dim RegEx objektumként, Str As String Set RegEx = CreateObject ("VBScript.RegExp") with RegEx .Pattern = "123" .Global = True "Ha FALSE, csak az első egyező karakterláncot cseréli." End With End Sub 

6. lépés: A befejezés után határozza meg a megfelelő karakterláncot, és cserélje ki a mintát.

Kód:

 Sub RegEx_Ex2 () Dim RegEx objektumként, Str As String Set RegEx = CreateObject ("VBScript.RegExp") with RegEx .Pattern = "123" .Global = True "Ha FALSE, csak az első illeszkedő karakterláncot cseréli. "123-654-000-APY-123-XYZ-888" End Sub 

6. lépés: A RegEx.Replace használatával cserélje ki az adott karakterlánc mintázatát más szöveggel.

Kód:

 Sub RegEx_Ex2 () Dim RegEx objektumként, Str As String Set RegEx = CreateObject ("VBScript.RegExp") with RegEx .Pattern = "123" .Global = True "Ha FALSE, csak az első illeszkedő karakterláncot cseréli. "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Replaced") End Sub 

Itt azt akartuk, hogy a „123” mintát helyettesítsük egy másik húrokkal. A RegEx.Replace lehetővé teszi a minta értékének cseréjét a karakterlánc darabjával (definiáltuk a „Replaced”). Kérjük, vessen egy pillantást a .Global = TRUE elemre is. Ez egy feltételes állítás. Ha Globális = IGAZ, akkor a Csere funkció minden illesztési mintát felvált a másik karakterláncra. Ha GLOBAL = FALSE, akkor a Csere funkció csak az első illesztési mintát pótolja, a többi többi pedig elhanyagolva.

7. lépés: Nyomja meg a Futtatás gombot vagy az F5 billentyűt, hogy futtassa ezt a kódot, és megjelenítse a kimenetet az azonnali kimeneti ablakban.

Excel VBA RegEx - 3. példa

Itt láthatja, hogy a RegEx.Execute használatával megtalálhatja az összes megfelelő mintát egy karakterláncban.

Az Excel VBA RegEx használatához kövesse az alábbi lépéseket.

1. lépés: Adjon meg egy új alapelvet a makró hozzáadásához.

Kód:

 RegEx_Ex3 () Sub 

2. lépés: Kövesse a két előző példával megegyező lépéseket egy reguláris kifejezés és egy változó meghatározásához, amely képes tárolni a karakterlánc értékét.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

3. lépés: Helyezzen be egy mintát, amelyet végrehajtani akart és egyeztetne az adott karakterláncba.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" End with End Sub 

4. lépés: Használja a .GLOBAL = TRUE menüpontot, hogy az összes egyezést rögzítse az adott karakterláncban.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") a RegEx segítségével .Pattern = "123-XYZ" .Global = True End with End Sub 

5. lépés: Adjon meg egy karakterláncot a Befejezés után, amelynek alatt az Execute alkalmazást kell használnia, és keresse meg az összes megfelelő mintát.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" .Global = True End Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "End Sub 

6. lépés: Most használja az Execute parancsot a nevű karakterláncon, hogy megtudja az összes mintához társított egyezéseket.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" .Global = True End Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Egyezések beállítása = RegEx.Execute (Str) End Sub 

7. lépés: A For loop használatával kinyomtathatja az illesztett minták értékét a közvetlen kimeneti ablakba.

Kód:

 Sub RegEx_Ex3 () Dim RegEx objektumként, Str as String Set RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "123-XYZ" .Global = True End Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Meghatározza a mérkőzéseket = RegEx.Execute (Str) Minden mérkőzéshez. Meccseken Debug.Print Match.Value Következő mérkőzés vége Sub 

8. lépés: Futtassa ezt a kódot az F5 vagy a futtatás gomb megnyomásával, és tekintse meg a kimenetet a közvetlen kimeneti ablak alatt.

Ez a kód kinyomtatja a megadott minta összes egyezését.

Dolgok, amikre emlékezni kell

  • A VBA Regular Expression csak a karakterláncok megismerésére használható. Nyilvánvaló, hogy a numerikus értékekhez nincs szükségünk ilyen funkcióra. A fenti három példa mindegyikében figyelembe vett összes numerikus értéket ténylegesen stringként definiáljuk.
  • Az Excel VBA RegEx-t állítólag sztringek kezelésére kell használni, ha nagy adat áll rendelkezésre. A VBA RegEx nem használja a program hatékonyságát.
  • A VBA RegEx nem működik, ha vannak olyan forgatókönyvek, amelyekben a minta n számú vagy végtelen alkalommal ismétlődik e célból.

Ajánlott cikkek

Ez egy útmutató a VBA RegEx-hez. Itt megvitattuk az Excel VBA RegEx használatát, néhány gyakorlati példával és letölthető Excel sablonnal együtt. Megnézheti más javasolt cikkeinket -

  1. Hogyan kell használni a VBA Csere programot az Excel programban?
  2. A Megjegyzés beszúrása az Excel alkalmazásban
  3. VBA TIMER létrehozása az Excel programban
  4. Beágyazott IF képlet az Excelben

Kategória: