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:
- Minta - A RegEx-ben meghatározott minta, amelyen műveleteket kíván végrehajtani.
- IgnoreCase - Figyelmen kívül hagyja a betűk betűit (a nagybetűs / nem nagybetű megegyezik a karakterláncban).
- 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.
- 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 sablonExcel 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 -
- Hogyan kell használni a VBA Csere programot az Excel programban?
- A Megjegyzés beszúrása az Excel alkalmazásban
- VBA TIMER létrehozása az Excel programban
- Beágyazott IF képlet az Excelben