VBA-jämförelse Operators: Inte lika, Less än eller Lika med

⚡ Smart sammanfattning

VBA-jämförelse Operatorer testar ett värde mot ett annat och returnerar Sant eller Falskt. Den här sidan definierar de sex operatorerna, visar dem i en If-sats, förklarar hur text och datum jämförs och listar de fel som ger felaktiga resultat.

  • ⚖️ Syfte: Jämförelseoperatorer validerar data genom att testa ett villkor som utvärderas till Sant eller Falskt.
  • 🔢 Sex Operators: Lika med, mindre än, större än, inte lika med, mindre än eller lika med, och större än eller lika med.
  • 🔁 Dubbel roll: Likhetstecknet jämför inom ett villkor och tilldelar ett värde utanför ett.
  • 🧪 Om-sats: Varje jämförelse placeras inuti If, ElseIf eller Do While för att styra vilken kod som körs.
  • 🔤 Text och datum: Strängar jämförs tecken för tecken och datum jämförs som serienummer.
  • ⚠️ Precisionsfälla: Två Double Värden som ser identiska ut kan misslyckas med ett likhetstest, så jämför en avrundad skillnad.

VBA-jämförelse Operatorer

VBA-jämförelse Operatorer

Det här är operatorer som används för att jämföra värden. Jämförelseoperatorerna inkluderar lika med, mindre än, större än och inte lika med.

Jämförelseoperatorer används för att jämföra värden i valideringssyfte. Låt oss säga att du utvecklarping en enkel kassaapplikation. I den här applikationen vill du validera de angivna värdena innan du bokför. I sådana fall kan du använda jämförelseoperatorer. Denna operator kontrollerar mot de negativa talen eller säkerställer att det betalda beloppet inte överstiger det fakturerade beloppet. Jämförelseoperatorer är praktiska i sådana situationer.

Varje jämförelse returnerar ett av två värden, Sant eller Falskt, och aldrig ett tal. Det resultatet är vad en If-sats agerar på.

Följande tabell listar de jämförelseoperatorer som definieras i VBA.

Operator BESKRIVNING
= Lika: kontrollerar om två värden är lika. Den används också som uppdragsoperatör
< Less än: kontrollerar om värdet till vänster är mindre än värdet till höger
> Större än: kontrollerar om värdet till vänster är större än värdet till höger
<> Inte lika med: kontrollerar om två värden skiljer sig från varandra
<= Less än eller lika med: kontrollerar om värdet till vänster är mindre än eller samma som värdet till höger
>= Större än eller lika med: kontrollerar om värdet till vänster är större än eller samma som värdet till höger

Att se varje operator tillämpad på två variabler gör det lättare att förutsäga det returnerade resultatet.

VBA-jämförelse Operators med Exempel

Följande tabell visar Excel VBA-jämförelse Operators med exempel och output.

S / N Operator Exempelvis Produktion
1 = Om x = z Då Returnerar sant om de är lika, annars returnerar det falskt
2 < Om x < z Då Returnerar sant om x är mindre än z, annars returnerar det falskt
3 > Om x > z Då Returnerar sant om x är större än z, annars returnerar det falskt
4 <> Om x <> z Då Returnerar sant om de inte är lika, annars returnerar det falskt
5 <= Om x <= z Då Returnerar sant om x är mindre än eller lika med z, annars returnerar det falskt
6 >= Om x >= z Då Returnerar sant om x är större än eller lika med z, annars returnerar det falskt

Exempel på källkod

Jämlik jämförelse Operator

If 2 = 1 Then
    MsgBox "True", vbOKOnly, "Equal Operator"
Else
    MsgBox "False", vbOKOnly, "Equal Operator"
End If

HÄR,

  • "Om 2 = 1 då... annars... sluta om" använder if-satsen för att utvärdera villkoret "2 = 1"
  • "MeddBox... " Är en inbyggd funktion som visar en meddelanderuta.
    • Den första parametern "True" eller "False" är vad som kommer att visas i meddelanderutan. I vårt exempel är 2 inte lika med 1, därför kommer det att visa "false" i meddelanderutan.
    • Den andra parametern "vbOKOnly" är knappen som visas i meddelanderutan
    • Den tredje parametern "Equal Operator” är rubriken på meddelanderutan.

Att köra ovanstående kod ger följande resultat

Lika Operator

Det enda testet är den enklaste formen. Riktiga makron kombinerar jämförelser och förgreningar mellan flera resultat.

Hur man använder jämförelse Operators i en If-sats

En jämförelseoperator är sällan användbar i sig själv. Dess resultat, Sant eller Falskt, matas in i en beslutsstruktur, och If-satsen är den du kommer att använda mest. Exemplet nedan betygsätter en poäng som finns i cell A1 och skriver resultatet bredvid.

Sub GradeScore()
    Dim Score As Long

    Score = Sheet1.Range("A1").Value

    If Score >= 90 Then
        Sheet1.Range("B1").Value = "Distinction"
    ElseIf Score >= 50 Then
        Sheet1.Range("B1").Value = "Pass"
    ElseIf Score < 0 Then
        MsgBox "A score cannot be negative", vbCritical, "Invalid Entry"
    Else
        Sheet1.Range("B1").Value = "Fail"
    End If
End Sub

Makrot läser poängen en gång och testar den sedan mot tre villkor i ordning. Fyra punkter förklarar varför den beter sig som den gör.

  • Ordningsfrågor: VBA stannar vid den första grenen som returnerar True. Placering Poäng >= 50 innan Poäng >= 90 skulle stämpla varje hög poäng som godkänt.
  • Annars är det som gäller: Alla värden som misslyckas med varje tidigare test faller igenom till Annars, så ingen indata lämnas ohanterad.
  • Ingen kedja: VBA kan inte läsa 0 <= Poäng <= 100. Skriva Om poäng >= 0 och poäng <= 100 då med logiska operatörer istället.
  • Samma test, andra strukturer: Det identiska villkoret styr Do While och Select Case, så operatorerna överförs till varje loop du skriver.

💡 Tips: Deklarera variabeln med en numerisk typ, som visas med Dimma poäng så längeOm värdet förblir en varianthålltext, "9" > "10" returnerar Sant eftersom jämförelsen görs tecken för tecken.

Jämföra text och datum i VBA

Numbers jämför exakt som aritmetiken antyder, men text och datum följer sina egna regler, och båda överraskar nybörjare.

Strängar jämförs ett tecken i taget med hjälp av deras sorteringsposition, så "Apple" < "Banan" returnerar True. Som standard är jämförelsen skiftlägeskänslig, vilket betyder att "guru99" = "Guru99” returnerar Falskt. Placering Alternativ Jämför text högst upp i modulen gör att varje strängjämförelse i den modulen ignoreras i skiftläge. För ett enda test utan att ändra modulen, använd StrComp med argumentet vbTextCompare.

Datum lagras som serienummer räknat från den 30 december 1899, så de jämförs direkt med samma sex operatorer. Om Förfallodatum < Datum Då identifierar korrekt en försenad artikel, eftersom Date returnerar det aktuella systemdatumet som samma typ av serienummer. Den enda fällan är ett datum som lagras som text: "01/02/2026" läst från en importerad fil är en sträng, inte ett datum, och jämförs alfabetiskt. Konvertera den med CDate innan du testar den.

Att känna till reglerna för varje typ eliminerar de flesta överraskningar, men några misstag drabbar fortfarande erfarna utvecklare.

Vanliga misstag vid jämförelse av värden i VBA

De fem problemen nedan står för de flesta jämförelser som ger ett oväntat resultat.

  • Uppgift felaktig för jämförelse: Utanför ett villkor, x = 5 lagrar 5 i x. Inuti If testar samma symboler likhet. VBA har ingen separat ==-operator, så läs sammanhanget noggrant.
  • Testning Double värden för exakt likhet: Lagrad precision innebär att 0.1 + 0.2 = 0.3 returnerar Falskt. Jämför istället den avrundade skillnaden, till exempel Om Abs(a – b) < 0.000001 Då.
  • Jämförelse av vad som helst med Null: Null är inte lika med någonting, inte ens ett annat Null-värde. Testa med IsNull istället för = Noll.
  • Jämföra text med ett tal: En cell som innehåller "100" som text är inte lika med talet 100. Konvertera med CLng eller CDbl före testet.
  • Läser .Text istället för .Value: Egenskapen .Text returnerar det som visas, vilket är avkortat med kolumnbredd och formatering. Jämför alltid .Value.

Ladda ner ovanstående Excel-fil Code

Vanliga frågor

Nej. VBA utvärderar den första jämförelsen till Sant eller Falskt och jämför sedan resultatet med 10, vilket ger ett missvisande svar. Skriv de två testerna separat och sammanfoga dem med Och.

Liksom jämför en sträng med ett mönster snarare än ett exakt värde. Jokertecken inkluderar asterisken för alla tecken och frågetecknet för ett tecken, så "Guru99” Gilla “Guru*” returnerar Sant.

Använd Is-operatorn, som i Om ws är ingenting, då. Likhetstecknet jämför värden, medan Is kontrollerar om två objektvariabler pekar på samma objekt, vilket är det enda giltiga testet för objekt.

Ja. Beskriv regeln med enkla ord, till exempel om du flaggar alla ordrar över 500 som lagts före idag, returnerar en AI-assistent matchande If-villkor. Kontrollera gränsvärdena innan du litar på den.

Ja. Klistra in If-blocket och en AI-assistent tracanger vilken gren som fångar varje värde och pekar sedan ut ett oåtkomligt ElseIf-värde eller en jämförelse mellan text och ett tal. Bekräfta korrigeringen steg för stegping genom koden.

Sammanfatta detta inlägg med: