VBA-stringvergelijking - Hoe twee stringwaarden te vergelijken?

Excel VBA String-vergelijking

Om twee strings in VBA te vergelijken, hebben we een ingebouwde functie, namelijk " StrComp ". Dit kunnen we lezen als " String Comparison ", deze functie is alleen beschikbaar met VBA en is niet beschikbaar als werkbladfunctie. Het vergelijkt twee willekeurige strings en retourneert de resultaten als "Zero (0)" als beide strings overeenkomen en als beide aangeleverde strings niet overeenkomen, dan krijgen we "One (1)" als resultaat.

In VBA of Excel worden we met veel verschillende scenario's geconfronteerd. Een voorbeeld van zo'n scenario is 'twee tekenreekswaarden vergelijken'. In een gewoon werkblad kunnen we dit op verschillende manieren doen, maar in VBA, hoe doe je dit?

Hieronder staat de syntaxis van de functie "StrComp".

Ten eerste zijn twee argumenten vrij eenvoudig,

  • voor String 1 moeten we opgeven wat de eerste waarde is die we vergelijken en
  • voor String 2 moeten we de tweede waarde opgeven die we vergelijken.
  • (Compare) dit is het optionele argument van de StrComp-functie. Dit is handig als we hoofdlettergevoelige vergelijking willen vergelijken. In dit argument is "Excel" bijvoorbeeld niet gelijk aan "EXCEL" omdat beide woorden hoofdlettergevoelig zijn.

We kunnen hier drie waarden opgeven.

  • Nul (0) voor ' Binary Compare ', dwz 'Excel', is niet gelijk aan 'EXCEL'. Voor een hoofdlettergevoelige vergelijking kunnen we 0 leveren.
  • Een (1) voor ' Text Compare ', dwz 'Excel', is gelijk aan 'EXCEL'. Dit is een niet hoofdlettergevoelige vergelijking.
  • Twee (2) dit alleen voor databasevergelijking.

De resultaten van de functie "StrComp" zijn niet standaard WAAR of ONWAAR, maar variëren. Hieronder staan ​​de verschillende resultaten van de functie "StrComp".

  • We krijgen “0” als resultaat als de aangeleverde strings overeenkomen.
  • We krijgen "1" als de geleverde strings niet overeenkomen, en in het geval van numerieke matching, krijgen we 1 als String 1 groter is dan string 2.
  • We krijgen “-1” als het nummer van string 1 kleiner is dan het nummer van string 2.

Hoe stringvergelijking uit te voeren in VBA?

Voorbeeld 1

We zullen ' Bangalore ' vergelijken met de tekenreeks ' BANGALORE' .

Declareer eerst twee VBA-variabelen als de tekenreeks om twee tekenreekswaarden op te slaan.

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String End Sub

Sla voor deze twee variabelen twee tekenreekswaarden op.

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" End Sub

Declareer nu nog een variabele om het resultaat van de " StrComp " -functie op te slaan .

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String End Sub

Open voor deze variabele de functie "StrComp".

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (End Sub

Voor "String1" en "String2" hebben we al waarden toegewezen via variabelen, dus voer respectievelijk variabelenamen in.

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, End Sub

Het laatste deel van de functie is "Compare" voor deze keuze "vbTextCompare."

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Waarde1, Waarde2, vbTextCompare) End Sub

Toon nu de variabele "Eindresultaat" in het berichtvenster in VBA.

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Waarde1, Waarde2, vbTextCompare) MsgBox FinalResult End Sub

Oké, laten we de code uitvoeren en het resultaat zien.

Uitgang:

Omdat zowel de strings "Bangalore" en "BANGALORE" hetzelfde zijn, hebben we het resultaat als 0, dwz overeenkomend. Beide waarden zijn hoofdlettergevoelig, aangezien we het argument hebben opgegeven als "vbTextCompare", het heeft de hoofdlettergevoelige overeenkomst genegeerd en alleen overeenkomende waarden, dus beide waarden zijn hetzelfde, en het resultaat is 0, dwz TRUE.

Code:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Waarde1, Waarde2, vbTextCompare) MsgBox FinalResult End Sub

Voorbeeld 2

For the same code, we will change the compare method from “vbTextCompare” to “vbBinaryCompare.”

Code:

Sub String_Comparison_Example2() Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now run the code and see the result.

Output:

Even though both the strings are the same, we got the result as 1, i.e., Not Matching because we have applied the compare method as “vbBinaryCompare,” which compares two values as case sensitive.

Example #3

Now we will see how to compare numerical values. For the same code, we will assign different values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Both the values are 500, and we will get 0 as a result because both the values are matched.

Output:

Now I will change the Value1 number from 500 to 100.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

We know Value1 & Value2 aren’t the same, but the result is -1 instead of 1 because for numerical comparison when the String 1 value is greater than String 2, we will get this -1.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Now I will reverse the values.

Code:

Sub String_Comparison_Example3() Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 1000 Dim FinalResult As String FinalResult = StrComp(Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub

Run the code and see the result.

Output:

This is not special. If not match, we will get 1 only.

Things to Remember here

  • (Compare) argument of “StrComp” is optional, but in case of case sensitive match, we can utilize this, and the option is “vbBinaryCompare.”
  • The result of numerical values is slightly different in case String 1 is greater than string 2, and the result will be -1.
  • Results are 0 if matched and 1 if not matched.

Recommended Articles

Dit is een gids geweest voor de vergelijking van de VBA-string. Hier bespreken we hoe we twee stringwaarden kunnen vergelijken met behulp van de StrComp-functie in Excel VBA, samen met voorbeelden en hoe we een Excel-sjabloon kunnen downloaden. U kunt ook andere artikelen bekijken die verband houden met Excel VBA -

  • Gids voor VBA String-functies
  • VBA Split String in Array
  • VBA SubString-methoden
  • VBA-tekst

Interessante artikelen...