Quando si lavora in VBA, è spesso necessario confrontare le stringhe. Per impostazione predefinita, VBA fa distinzione tra maiuscole e minuscole, quindi se confronti due stessi testi e uno di essi è in maiuscolo e l'altro in minuscolo, VBA li considererà come testi diversi. In questo tutorial, vedrai come impedire a VBA di fare distinzione tra maiuscole e minuscole.
Rendere insensibile alle maiuscole e minuscole di VBA
Per rendere VBA insensibile alle maiuscole, devi mettere Opzione Confronta testo all'inizio del modulo. Innanzitutto, esamineremo il comportamento VBA standard senza questa opzione impostata. Questo è il codice:
123456789 | If Sheet1.Range("A1").Value = Sheet1.Range("B1").Value ThenMsgBox "Due testi sono uguali"AltroMsgBox "Due testi sono diversi"Finisci se |
Nell'esempio, vogliamo confrontare le stringhe di A1 e B1. Se le stringhe sono uguali, restituiremo la finestra di messaggio con il messaggio "Due testi sono uguali". Se non sono uguali, restituiremo il messaggio “Due testi sono diversi.
Immagine 1. Confronto delle stringhe senza l'opzione Confronta testo
Come puoi vedere nell'immagine, entrambi i testi sono uguali, ma il primo è in maiuscolo, mentre il secondo è in minuscolo. Per questo motivo, VBA li considera diversi e ha restituito questo messaggio.
1234567891011 | Opzione Confronta testoPublic Sub CaseSensitiveTest()If Sheet1.Range("A1").Value = Sheet1.Range("B1").Value ThenMsgBox "Due testi sono uguali"AltroMsgBox "Due testi sono diversi"Finisci seFine sottotitolo |
Ora aggiungeremo l'opzione Confronta testo all'inizio del modulo e vedremo la differenza. Ecco il codice. Eseguiamo il codice sullo stesso esempio:
Immagine 2. Confronto delle stringhe con l'opzione Confronta testo
Ora, quando l'opzione Confronta testo è impostata, il VBA non fa distinzione tra maiuscole e minuscole e considera questi due testi uguali.
Testo a confronto
Se non dichiari Opzione Confronta testo, puoi convertire i casi di stringa per effettuare confronti senza distinzione tra maiuscole e minuscole. Ciò è possibile tramite la funzione UCase, LCase o StrConv. Puoi saperne di più su questo qui: VBA Upper, Lower, and Proper Case - Case Functions