VBA RegEx

VBA RegEx "Regular Expression" è molto utile nel mondo della programmazione che può essere utilizzato per convalidare l'input del sito Web, la ricerca di schemi di parole in stringhe / testo di grandi dimensioni, per la ricerca e la sostituzione di stringhe.

La maggior parte di noi utilizza FIND, SUBSTITUTE, LEFT, RIGHT insieme alle funzioni MID per la manipolazione delle stringhe in Microsoft Excel, vero? Tuttavia, queste funzioni hanno i loro limiti che non possono essere ampiamente utilizzati. Conoscere le espressioni regolari VBA ti farà risparmiare molto tempo nella vita di tutti i giorni. Le espressioni regolari sono abbreviate come "RegEx" (o Regex) in VBA. In questo tutorial, daremo un'occhiata ad alcuni dei RegEx con il loro utilizzo.

È possibile utilizzare l'oggetto VBA RegEx che è già stato creato nella libreria delle espressioni regolari di Microsoft VBScript. È possibile navigare in questa libreria facendo clic su Strumenti - Riferimento - Espressioni regolari di Microsoft VBScript.

Puoi anche creare un oggetto RegEx usando la funzione CreateObject in VBA. Sembra un modo più conveniente perché in questo caso non è sempre necessario fare riferimento alla libreria VBScript Regular Expressions.

Vedi il codice qui sotto:

 Dim regex come set di oggetti regex = CreateObject ("VBScript.RegExp") 

Questo codice ti permetterà di creare e accedere agli oggetti RegEx nella tua macro. Personalmente preferisco così alla prima per la sua rigidità.

La funzione RegEx consente di manipolare quanto segue in una stringa lunga.

  • I caratteri jolly come *, ? eccetera.
  • Espressioni raggruppate insieme a caratteri jolly.

RegEx ha sotto parametri / proprietà:

  1. Pattern - Il pattern definito in RegEx su cui si desidera eseguire operazioni.
  2. IgnoreCase - Ignora il caso delle lettere (Caps / Non-Caps sono gli stessi in una stringa).
  3. Globale : consente di trovare tutte le possibili corrispondenze se impostato su TRUE. Se impostato come FALSO, trova solo la prima corrispondenza.
  4. MultiLine : consente di abbinare il motivo in una stringa che si sviluppa su più righe.

RegEx facilita le tre operazioni seguenti:

  • Test : verifica se il modello menzionato è presente nella stringa o meno. Se presente restituisce VERO, altrimenti FALSO.
  • Sostituisci : sostituisce il motivo originale con l'altro.
  • Esegui : restituisce tutti i motivi corrispondenti cercati.

Come utilizzare Excel VBA RegEx?

Impareremo come utilizzare l'espressione regolare VBA di Excel con alcuni esempi.

Puoi scaricare questo modello VBA RegEx Excel qui - Modello VBA RegEx Excel

Excel VBA RegEx - Esempio n. 1

Qui, controllerai se il modello menzionato è presente nel testo usando RegEx.Test.

Seguire i passaggi seguenti per utilizzare VBA RegEx.

Passaggio 1: definire una nuova procedura secondaria per creare una macro.

Codice:

 Sottoreg. RegEx_Ex1 () End Sub 

Passaggio 2: definire due variabili RegEx come oggetto che è possibile utilizzare per creare l'oggetto RegEx e Str come stringa.

Codice:

 Sub RegEx_Ex1 () Dim RegEx come oggetto, Str come stringa Fine sott 

Passaggio 3: Creare l'oggetto RegEx utilizzando la funzione CreateObject.

Codice:

 Sub RegEx_Ex1 () Dim RegEx come oggetto, Str as String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

Passaggio 4: aggiungere il modello da testare con la funzione RegEx.

Codice:

 Sub RegEx_Ex1 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "(0-9) +" End With End Sub 

Passaggio 5: definire la stringa all'interno della quale è necessario verificare il modello specificato.

Codice:

 RegEx_Ex1 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "(0-9) +" End With Str = "Il mio numero di bici è MH-12 PP- 6145 "End Sub 

Passaggio 6: utilizzare RegEx.Test per verificare se il modello specificato è presente nella variabile denominata Str. Inoltre, utilizzare Debug.Print per stampare il risultato (Vero o Falso) nella finestra immediata.

Codice:

 RegEx_Ex1 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "(0-9) +" End With Str = "Il mio numero di bici è MH-12 PP- 6145 "Debug.Print RegEx.Test (Str) End Sub 

Passaggio 7: premere F5 o il pulsante Esegui per eseguire il codice e vedere l'output. (Premi CTRL + G per aprire la finestra immediata)

Qui, abbiamo creato un oggetto RegEx. Quindi, con VBA RegEx, abbiamo verificato se il modello dato (“(0-9) +”) che include tutti i numeri / combinazione di numeri da 0 a 9 è presente nella stringa definita con l'aiuto di RegEx.Test ( Str). L'output "True" nella finestra immediata mostra che il pattern "(0-9) +" è presente in una determinata stringa.

Excel VBA RegEx - Esempio n. 2

Qui vedrai come puoi sostituire una stringa con un'altra usando RegEx.Replace.

Seguire i passaggi seguenti per utilizzare VBA RegEx.

Passaggio 1: definire una nuova sottostringa per creare una macro.

Codice:

 Sottoreg. RegEx_Ex2 () End Sub 

Passaggio 2: Come nel primo esempio, definire due variabili RegEx come un oggetto che può contenere il valore dell'oggetto RegEx e Str che manterrà il valore della stringa che verrà definita.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str come stringa Fine sott 

Passaggio 3: definire l'oggetto RegEx e impostarlo sulla variabile RegEx utilizzando la funzione CreateObject.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str as String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

Passaggio 4: inserire il motivo che si desidera sostituire utilizzando la funzione .Pattern.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123" End With End Sub 

Passaggio 5: utilizzare .GLOBAL = TRUE che, se TRUE, consente di sostituire tutti i modelli corrispondenti in una determinata stringa. Se FALSE sostituisce solo il primo modello corrispondente.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123" .Global = True 'Se FALSE, sostituisce solo la prima stringa corrispondente' End With End Sub 

Passaggio 6: Dopo End With, definire la stringa con cui si desidera abbinare e sostituire il modello.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str as String Set RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123" .Global = True 'Se FALSE, sostituisce solo la prima stringa corrispondente' End With Str = "123-654-000-APY-123-XYZ-888" End Sub 

Passaggio 6: utilizzare RegEx.Replace per sostituire il valore del modello nella stringa specificata con altro testo.

Codice:

 Sub RegEx_Ex2 () Dim RegEx come oggetto, Str as String Set RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123" .Global = True 'Se FALSE, sostituisce solo la prima stringa corrispondente' End With Str = "123-654-000-APY-123-XYZ-888" Debug.Print RegEx.Replace (Str, "Sostituito") End Sub 

Qui, volevamo che il motivo "123" fosse sostituito da qualche altro pezzo di corda. RegEx.Replace consente di sostituire il valore del motivo con il pezzo di stringa (abbiamo definito "Sostituito"). Dai un'occhiata anche a .Global = TRUE. Che è una dichiarazione condizionale. Se Global = TRUE, la funzione Sostituisci sostituisce tutti i pattern corrispondenti con l'altra stringa. Se GLOBAL = FALSE, la funzione Sostituisci sostituisce solo il primo modello corrispondente e gli altri vengono trascurati.

Passaggio 7: premere il pulsante Esegui o F5 per eseguire questo codice e vedere l'output nella finestra Output immediato.

Excel VBA RegEx - Esempio n. 3

Qui, vedrai come puoi trovare tutti i pattern corrispondenti in una stringa usando RegEx.Execute.

Seguire i passaggi seguenti per utilizzare Excel VBA RegEx.

Passaggio 1: definire una nuova procedura secondaria per aggiungere la macro.

Codice:

 Sottoreg. RegEx_Ex3 () End Sub 

Passaggio 2: seguire i passaggi come nei due precedenti esempi per definire un'espressione regolare e una variabile che può contenere il valore di stringa.

Codice:

 Sub RegEx_Ex3 () Dim RegEx As Object, Str As String Set RegEx = CreateObject ("VBScript.RegExp") End Sub 

Passaggio 3: inserire un modello che si desidera eseguire e abbinare nella stringa specificata.

Codice:

 Sub RegEx_Ex3 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") con RegEx .Pattern = "123-XYZ" End With End Sub 

Passaggio 4: utilizzare .GLOBAL = TRUE in modo che tutte le corrispondenze vengano acquisite nella stringa specificata.

Codice:

 Sub RegEx_Ex3 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123-XYZ" .Global = True End con End Sub 

Passaggio 5: definire una stringa dopo End With in cui è necessario utilizzare Execute e trovare tutti i pattern corrispondenti.

Codice:

 Sub RegEx_Ex3 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "End Sub 

Passaggio 6: ora, utilizzare Esegui sulla variabile denominata stringa per scoprire tutte le corrispondenze associate a un determinato modello.

Codice:

 Sub RegEx_Ex3 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Imposta corrispondenze = RegEx.Execute (Str) End Sub 

Passaggio 7: utilizzare il ciclo For per stampare il valore di tutti i motivi corrispondenti nella finestra di output immediato.

Codice:

 Sub RegEx_Ex3 () Dim RegEx come oggetto, Str come set di stringhe RegEx = CreateObject ("VBScript.RegExp") Con RegEx .Pattern = "123-XYZ" .Global = True End With Str = "123-XYZ-326-ABC- 983-670-PQR-123-XYZ "Imposta partite = RegEx.Execute (Str) per ogni partita Nelle partite Debug.Print Match.Value Prossima partita End Sub 

Passaggio 8: eseguire questo codice premendo F5 o il pulsante di esecuzione e vedere l'output nella finestra di output immediato.

Questo codice stampa tutto il numero di corrispondenze per il modello definito.

Cose da ricordare

  • VBA Regular Expression può essere utilizzato solo per scoprire le stringhe. Ovviamente, per i valori numerici, non abbiamo bisogno di una tale funzione. Tutti i valori numerici considerati in ciascuno dei tre esempi sopra sono in realtà definiti come una stringa.
  • Excel VBA RegEx dovrebbe essere usato per la manipolazione di stringhe ogni volta che ci sono dati di grandi dimensioni. Non utilizzare VBA RegEx riduce l'efficienza del programma.
  • VBA RegEx fallisce quando ci sono scenari in cui un pattern si ripete n numero di volte o infinite volte per quel motivo.

Articoli consigliati

Questa è stata una guida a VBA RegEx. Qui abbiamo discusso su come utilizzare Excel VBA RegEx insieme ad alcuni esempi pratici e modello Excel scaricabile. Puoi anche consultare i nostri altri articoli suggeriti:

  1. Come utilizzare VBA Sostituisci in Excel?
  2. Utilizzando Inserisci commento in Excel
  3. Creazione di TIMER VBA in Excel
  4. Formula IF annidata in Excel

Categoria: