VBA RegEx | Com s'utilitza l'expressió regular a VBA Excel? (Exemples)

Què és RegEx a Excel VBA?

RegEx significa "Expressió normal”A VBA Excel i és una seqüència de caràcters que defineix el patró de cerca per trobar un patró específic de caràcters en una cadena de valors. En una paraula senzilla "podem crear un patró d'expressió regular i utilitzar-lo per buscar la cadena d'aquest patró".

VBA RegEx és un model d'objectes. Sé que és intimidant mirant l'explicació, però el cas és que la naturalesa de l'objecte. Una cosa que heu de recordar aquí és que VBA RegEx (Expressió regular) és un objecte de funció de text com les nostres altres funcions de text "ESQUERRA, DRETA, MIDA".

Com s'activa RegEx a Excel VBA?

Com he dit, VBA RegEx és un model d'objectes a VBA igual que el nostre programari extern com "MS Word" i "MS PowerPoint". De manera similar, RegEx també és un model d’objectes de components (COM) que hem de fer referència a l’editor VBA. Per activar RegEx, seguiu els passos següents.

Pas 1: Aneu a Visual Basic Editor (Alt + F11)

Pas 2: Aneu a Eines i referències.

Pas 3: Ara veureu referències al Projecte VBA. Desplaceu-vos cap avall i seleccioneu "Microsoft VBScript Regular Expression 5.5"

Pas 4: Ara feu clic a D'acord. Ara podem accedir a aquest objecte RegEx mitjançant la codificació VBA.

Exemple - Ara us mostraré un exemple senzill. Suposem que teniu les paraules "Vendes 2019, Vendes 2018 i Vendes 2017". Si definiu el patró com a [0 - 7], coincideix amb tots els números entre 0 i 7, de manera que les coincidències seran 201, 201 i 2017 a cada cadena.

Patró VBA RegEx

El patró de la funció VBA RegEx sembla intimidatori i triga una mica a entendre el patró. Aquí podem veure dos tipus de seqüències de caràcters: un és "Caràcters literals" i un altre és "Metacaracters".

  • Personatges literals cerqueu la coincidència exacta de la cadena proporcionada. Per exemple, la seqüència literal de caràcters "EFG" simplement busca totes les coincidències de "EFG" al text proporcionat.
  • Metacaracters no són més que una combinació de caràcters amb un significat exacte al patró RegEx. Això és completament diferent de Personatges literals. És un tema enorme a tractar, a continuació es mostren algunes de les sintaxis importants.
SintaxiDescripcióExempleExemple de concordança
.Coincideix amb qualsevol caràcter de la cadena d'entradapàgMascota. Pot, Posa, Patró
[]Coincideix amb qualsevol caràcter entre el claudàtor d’una cadena d’entrada[pt]Coincideix amb p o t
[^]Coincideix amb qualsevol caràcter, no entre el claudàtor d'una cadena d'entrada[^ pt]No coincideix ni amb p ni amb t
[Primer últim]Coincideix amb qualsevol caràcter entre l'interval proporcionat entre claudàtors[0-9]Coincideix amb qualsevol dígit del 0 al 9
[a-z]Coincideix amb qualsevol caràcter de minúscula de la a la la z
[A-Z]Coincideix amb qualsevol caràcter en majúscula de l'A a la Z
\ sCoincideix amb qualsevol caràcter d'espai en blancCoincideix amb l'espai, la línia nova o el caràcter de tabulació
\ SCoincideix amb qualsevol personatge que no sigui espai blancEls caràcters coincidents no són espai, ni línia nova ni caràcter de tabulació
\ dCoincideix amb qualsevol caràcter d'un sol dígitSE 5 VG 6Partits 5 i 6
\ DCoincideix amb qualsevol caràcter no digitalSE 5 VG 6Partits SEVG

Propietats i mètodes de l'objecte RegEx

Com tots els nostres models d'objectes, RegEx també té les seves pròpies propietats i mètodes. Ara veurem un per un en detall.

Propietats de l'objecte VBA Regex

  • Patró: S'utilitza per fer coincidir la cadena proporcionada.
  • Ignora el cas: Es tracta d’ignorar els caràcters majúscules i minúscules.
  • Global: Si voleu trobar totes les coincidències del patró, aleshores TRUE és l'argument o bé es trobarà la primera coincidència.
  • Multilínia: Si voleu trobar nous salts de línia, podeu utilitzar-lo.

Mètodes d'objecte RegEx

  • Prova: Es tracta de comprovar si el patró es pot trobar a la cadena proporcionada. Això tornarà CERT si es troba o bé FALS.
  • Executa: Això tornarà totes les coincidències del patró contra la cadena de cerca.
  • Substitueix: Això substituirà la cadena de cerca per la cadena nova.

Exemple de RegEx a VBA Excel

Ara mireu l’exemple següent del codi VBA.

Podeu descarregar aquesta plantilla VBA RegEx Excel aquí: plantilla VBA RegEx Excel

Codi:

 Sub RegEx_Example () Dim RegEx com a objecte, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Data de naixement l'any 1985" MsgBox RegEx .Test (MyString) MyString = "L'any de naixement és ???" MsgBox RegEx.Test (MyString) End Sub 

fregular

Al codi anterior, hem definit el patró per cercar el número del 0 al 9 de la següent manera.

 Amb RegEx .Pattern = "[0-9] +" Finalitza amb 

A continuació, la variable MyString = "Data de naixement de l'any 1985" conté els valors de 0 a 9, de manera que el nostre quadre de missatges retornarà CERT.

MyString = "L'any de la data de naixement és ???" no té cap número del 0 al 9, de manera que tornarà FALS a mesura que resultin els quadres de missatges.