VBA StrComp - Comparer des chaînes dans VBA à l'aide de la fonction StrComp

Table des matières

Fonction Excel VBA StrComp

VBA StrComp est une fonction intégrée utilisée pour comparer si les deux valeurs de chaîne sont identiques ou non. Cependant, les résultats ne sont pas VRAI ou FAUX par défaut comme dans la feuille de calcul, mais ils sont différents.

Avant d'examiner les résultats, permettez-moi de vous montrer d'abord la syntaxe de la fonction StrComp.

  • Chaîne 1: La chaîne 1 est la première chaîne ou valeur que nous comparons.
  • Chaîne 2: la chaîne 2 est la deuxième chaîne ou valeur que nous comparons à la chaîne 1 .
  • Comparez: nous pouvons fournir trois options ici.
      • 0 = comparaison binaire. Cela effectue des calculs sensibles à la casse. Par exemple, «Hello» n'est pas égal à «HELLO» car les deux cas des mots sont différents. Il s'agit de la valeur par défaut si vous ignorez ce paramètre. vbBinaryCompare
      • 1 = comparaison de texte. Cette option effectue les calculs non sensibles à la casse. Par exemple, «Hello» est égal à l'événement «HELLO» bien que les deux cas de mots soient différents. vbTextCompare
      • 2 = Accédez à Comparer. Cela effectue une comparaison de base de données.

Résultats de la fonction de comparaison de chaînes (StrComp)

Comme je l'ai dit lorsque nous comparons deux valeurs dans la feuille de calcul, nous obtenons le résultat VRAI ou FAUX. Mais avec la fonction de comparaison de chaînes VBA, les résultats ne sont pas les mêmes.

  • Nous obtenons zéro (0) lorsque la chaîne 1 est égale à la chaîne 2.
  • Nous obtenons un (1) lorsque la chaîne 1 valeur est supérieure à la chaîne 2 Valeur .
  • Nous obtenons moins un (-1) lorsque la valeur de la chaîne 1 est inférieure à la chaîne 2
  • Nous obtenons NULL lorsque la valeur de la chaîne 1 ou de la chaîne 2 est NULL.

Exemples d'utilisation de la fonction VBA StrComp

Exemple 1

Commençons par un exemple simple. Par exemple, nous comparerons deux valeurs, à savoir «Excel VBA» et «Excel VBA».

Code:

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" 'Attribuer la valeur String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Appliquer la fonction StrComp MsgBox Result 'Afficher le résultat dans la boîte de message End Sub

Lorsque j'exécute ce code, nous obtiendrons zéro (0) comme résultat car les valeurs de la chaîne 1 et de la chaîne 2 sont identiques.

Exemple # 2

Maintenant, je vais changer les cas de deux mots.

Chaîne 1 = Excel Vba

Chaîne 2 = Excel VBA

Code:

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" 'Attribuer la valeur String 2 Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Appliquer la fonction StrComp MsgBox Result 'Afficher le résultat dans la boîte de message End Sub

Quand j'exécute ce code, nous obtiendrons 1 parce que puisque nous avons fourni l'argument Compare comme « vbBinaryCompare», il vérifiera les caractères sensibles à la casse.

Maintenant, je vais changer l' option de comparaison de « vbBinaryCompare» à « vbTextCompare»

Code:

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" 'Attribuer la valeur String 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Appliquer la fonction StrComp MsgBox Result 'Afficher le résultat dans la boîte de message End Sub

Avec cette comparaison, nous obtiendrons zéro (0) car vbaTextCompare ignore les mots sensibles à la casse.

Exemple # 3

Étude de cas de VBA StrComp avec condition IF

Supposons que vous ayez les données comme l'image ci-dessous.

We need to compare String 1 with String 2 and arrive at the Result as “Exact” if both are the same, else the result should be “Not Exact.”

The below code will do the job for us.

Code:

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 = "Exact" Else Cells(i, 3).Value = "Not Exact" End If Next i End Sub

When I run the above VBA code in Excel, we will get the below result.

If you look at C4 cell String 1 and String 2 are the same, but the characters are case sensitive, so the result is “Not Exact.” To overcome this issue, we need to supply the Compare as vbTextCompare.

Vous trouverez ci-dessous le code modifié pour obtenir le résultat «Exact» pour la cellule C4.

Code:

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

Ce code renverra le résultat ci-dessous.

Articles intéressants...