VBA StrComp

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 c'est différent.

Avant de regarder 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 de 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

Vous pouvez télécharger ce modèle Excel VBA StrComp ici - Modèle Excel 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 obtenons zéro (0) comme résultat, car les valeurs de chaîne 1 et de 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 car 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.

Nous devons comparer la chaîne 1 avec la chaîne 2 et arriver au résultat comme "Exact" si les deux sont identiques, sinon le résultat devrait être "Non exact".

Le code ci-dessous fera le travail pour nous.

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 

Lorsque j'exécute le code VBA ci-dessus dans Excel, nous obtenons le résultat ci-dessous.

Si vous regardez la cellule C4, la chaîne 1 et la chaîne 2 sont identiques, mais les caractères sont sensibles à la casse, le résultat est donc «non exact». Pour résoudre ce problème, nous devons fournir le Compare en tant que 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.