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.
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
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


