VBA StrComp - Confronta le stringhe in VBA utilizzando la funzione StrComp

Funzione Excel VBA StrComp

VBA StrComp è una funzione incorporata utilizzata per confrontare se i due valori di stringa sono uguali o meno. Tuttavia, i risultati non sono impostati come VERO o FALSO come nel foglio di lavoro, piuttosto è diverso.

Prima di esaminare i risultati, lascia che ti mostri prima la sintassi della funzione StrComp.

  • Stringa 1: Stringa 1 è la prima stringa o valore che stiamo confrontando.
  • Stringa 2: Stringa 2 è la seconda stringa o valore che stiamo confrontando con la Stringa 1 .
  • Confronta: possiamo fornire tre opzioni qui.
      • 0 = Confronto binario. Esegue calcoli con distinzione tra maiuscole e minuscole. Ad esempio, "Hello" non è uguale a "HELLO" perché entrambe le maiuscole delle parole sono diverse. Questo è il valore predefinito se ignori questo parametro. vbBinaryCompare
      • 1 = Confronta testo. Questa opzione esegue i calcoli senza distinzione tra maiuscole e minuscole. Ad esempio, "Hello" è uguale all'evento "HELLO" sebbene entrambi i casi delle parole siano diversi. vbTextCompare
      • 2 = Confronta accesso. Questo esegue il confronto del database.

Risultati della funzione di confronto tra stringhe (StrComp)

Come ho detto quando confrontiamo due valori nel foglio di lavoro, otteniamo il risultato come VERO o FALSO. Ma con la funzione di confronto delle stringhe VBA, i risultati non sono gli stessi.

  • Otteniamo zero (0) quando String 1 è uguale a String 2.
  • Otteniamo un (1) quando lo String 1 valore è maggiore della stringa 2 Valore .
  • Otteniamo meno uno (-1) quando il valore di String 1 è minore di String 2
  • Otteniamo NULL quando il valore di String 1 o String 2 è NULL.

Esempi di utilizzo della funzione VBA StrComp

Esempio 1

Cominciamo con un semplice esempio. Ad esempio, confronteremo due valori, ovvero "Excel VBA" e "Excel VBA".

Codice:

Sub StrComp_Example1 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel VBA"' Assign the String 1 value SecondValue = "Excel VBA" 'Assegna il valore String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Applica StrComp function MsgBox Result 'Mostra il risultato nella finestra di messaggio End Sub

Quando eseguo questo codice, otterremo Zero (0) come risultato perché entrambi i valori String 1 e String 2 sono gli stessi.

Esempio n. 2

Ora cambierò i casi di due parole.

Stringa 1 = Excel Vba

Stringa 2 = Excel VBA

Codice:

Sub StrComp_Example2 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel Vba"' Assign the String 1 value SecondValue = "Excel VBA" 'Assegna il valore String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Applica la funzione StrComp MsgBox Result 'Mostra il risultato nella finestra di messaggio End Sub

Quando eseguo questo codice, otterremo 1 perché poiché abbiamo fornito l'argomento Compare come " vbBinaryCompare", verificherà la presenza di caratteri con distinzione tra maiuscole e minuscole.

Ora cambierò l' opzione Confronta da " vbBinaryCompare" a " vbTextCompare"

Codice:

Sub StrComp_Example3 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel Vba"' Assign the String 1 value SecondValue = "Excel VBA" 'Assegna il valore String 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Applica la funzione StrComp MsgBox Result 'Mostra il risultato nella finestra di messaggio End Sub

Con questo confronto, otterremo zero (0) perché vbaTextCompare ignora le parole con distinzione tra maiuscole e minuscole.

Esempio n. 3

Case Study di VBA StrComp con IF Condition

Supponi di avere i dati come l'immagine qui sotto.

Dobbiamo confrontare la stringa 1 con la stringa 2 e arrivare al risultato come "Esatto" se entrambi sono uguali, altrimenti il ​​risultato dovrebbe essere "Non esatto".

Il codice seguente farà il lavoro per noi.

Codice:

Sub StrComp_Example4 () Dim Result As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value) If Result = 0 Then Cells (i, 3 ) .Value = "Esatto" Else Cells (i, 3) .Value = "Non esatto" End If Next i End Sub

Quando eseguo il codice VBA sopra in Excel, otterremo il risultato seguente.

Se guardi la cella C4, la stringa 1 e la stringa 2 sono uguali, ma i caratteri fanno distinzione tra maiuscole e minuscole, quindi il risultato è "Non esatto". Per superare questo problema, dobbiamo fornire il Compare as vbTextCompare.

Di seguito è riportato il codice modificato per ottenere il risultato come "Esatto" per la cella C4.

Codice:

Sub StrComp_Example4 () Dim Result As String Dim I As Integer For i = 2 To 6 Result = StrComp (Cells (i, 1) .Value, Cells (i, 2) .Value, vbTextCompare) If Result = 0 Then Cells (i , 3) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub

Questo codice restituirà il risultato seguente.

Articoli interessanti...