VBA StrComp

Excel VBA StrComp-functie

VBA StrComp is een ingebouwde functie die wordt gebruikt om te vergelijken of de twee stringwaarden hetzelfde zijn of niet. De resultaten zijn echter niet standaard WAAR of ONWAAR zoals in het werkblad, maar het is anders.

Voordat we naar de resultaten kijken, wil ik u eerst de syntaxis van de StrComp-functie laten zien.

  • String 1: String 1 is de eerste string of waarde die we vergelijken.
  • String 2: String 2 is de tweede string of waarde die we vergelijken met String 1 .
  • Vergelijk: we kunnen hier drie opties aanbieden.
      • 0 = Binair vergelijken. Hiermee worden hoofdlettergevoelige berekeningen uitgevoerd. "Hallo" is bijvoorbeeld niet gelijk aan "HALLO" omdat beide woorden hoofdlettergebruik verschillen. Dit is de standaardwaarde als u deze parameter negeert. vbBinaryCompare
      • 1 = Tekst vergelijken. Deze optie voert de niet-hoofdlettergevoelige berekeningen uit. Bijvoorbeeld "Hallo" is gelijk aan de "HALLO" -gebeurtenis, hoewel beide woorden zijn verschillend. vbTextCompare
      • 2 = Toegang tot vergelijking. Dit voert databasevergelijking uit.

Resultaten van de functie String Comparison (StrComp)

Zoals ik al zei, wanneer we twee waarden in het werkblad vergelijken, krijgen we het resultaat als WAAR of ONWAAR. Maar met de VBA-tekenreeksvergelijkingsfunctie zijn de resultaten niet hetzelfde.

  • We krijgen nul (0) als String 1 gelijk is aan String 2.
  • We krijgen een (1), wanneer de String 1 waarde groter is dan de String 2 Value .
  • We krijgen min één (-1) als de waarde van String 1 kleiner is dan String 2
  • We krijgen NULL als de waarde van String 1 of String 2 NULL is.

Voorbeelden om VBA StrComp-functie te gebruiken

U kunt deze VBA StrComp Excel-sjabloon hier downloaden - VBA StrComp Excel-sjabloon

Voorbeeld 1

Laten we beginnen met een eenvoudig voorbeeld. We zullen bijvoorbeeld twee waarden vergelijken, namelijk "Excel VBA" en "Excel VBA".

Code:

 Sub StrComp_Example1 () Dim FirstValue As String 'Om String 1-waarde op te slaan Dim SecondValue As String' Om String 2-waarde op te slaan Dim Result As String 'Om resultaat van de StrComp-formule op te slaan FirstValue = "Excel VBA"' Wijs de String 1-waarde toe SecondValue = "Excel VBA" 'Ken de String 2-waarde toe Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Pas StrComp-functie MsgBox Result toe 'Toon het resultaat in het berichtvenster End Sub 

Wanneer ik deze code uitvoer, krijgen we Zero (0) als resultaat omdat zowel String 1- als String 2- waarden hetzelfde zijn.

Voorbeeld # 2

Nu zal ik de gevallen van twee woorden veranderen.

Tekenreeks 1 = Excel Vba

Tekenreeks 2 = Excel VBA

Code:

 Sub StrComp_Example2 () Dim FirstValue As String 'Om String 1-waarde op te slaan Dim SecondValue As String' Om String 2-waarde op te slaan Dim Result As String 'Om resultaat van de StrComp-formule op te slaan FirstValue = "Excel Vba"' Wijs de String 1-waarde toe SecondValue = "Excel VBA" 'Wijs de String 2-waarde toe Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Pas de StrComp-functie MsgBox Result toe 'Toon het resultaat in het berichtvenster End Sub 

Als ik deze code uitvoer , krijgen we 1 omdat, aangezien we het Compare-argument als " vbBinaryCompare" hebben opgegeven, het zal controleren op hoofdlettergevoelige tekens.

Nu zal ik de optie Compare wijzigen van " vbBinaryCompare" naar " vbTextCompare"

Code:

 Sub StrComp_Example3 () Dim FirstValue As String 'Om String 1-waarde op te slaan Dim SecondValue As String' Om String 2-waarde op te slaan Dim Result As String 'Om resultaat van de StrComp-formule op te slaan FirstValue = "Excel Vba"' Wijs de String 1-waarde toe SecondValue = "Excel VBA" 'Ken de String 2-waarde toe Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Pas StrComp-functie MsgBox Result toe 'Toon het resultaat in het berichtvenster End Sub 

Met deze Compare krijgen we nul (0) omdat vbaTextCompare hoofdlettergevoelige woorden negeert.

Voorbeeld # 3

Case study van VBA StrComp met IF-voorwaarde

Stel dat u de gegevens heeft zoals de onderstaande afbeelding.

We moeten String 1 vergelijken met String 2 en het resultaat krijgen als "Exact" als beide hetzelfde zijn, anders zou het resultaat "Niet exact" moeten zijn.

De onderstaande code zal het werk voor ons doen.

Code:

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

Wanneer ik de bovenstaande VBA-code in Excel uitvoer, krijgen we het onderstaande resultaat.

Als je kijkt naar C4 cel String 1 en String 2 zijn hetzelfde, maar de tekens zijn hoofdlettergevoelig, dus het resultaat is "Niet exact". Om dit probleem op te lossen, moeten we de Compare als vbTextCompare aanleveren.

Hieronder staat de gewijzigde code om het resultaat als "Exact" voor de C4-cel te krijgen.

Code:

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

Deze code retourneert het onderstaande resultaat.