VBA sammenligning Operators: Ikke lige, Less end eller Lige til
⚡ Smart opsummering
VBA sammenligning Operatorer tester én værdi mod en anden og returnerer Sand eller Falsk. Denne side definerer de seks operatorer, viser dem i en If-sætning, forklarer, hvordan tekst og datoer sammenlignes, og viser de fejl, der giver forkerte resultater.

VBA sammenligning Operatorer
Disse er operatorer, der bruges til at sammenligne værdier. Sammenligningsoperatorer inkluderer lig med, mindre end, større end og ikke lig med.
Sammenligningsoperatorer bruges til at sammenligne værdier med henblik på validering. Lad os sige, at du udviklerping en simpel salgsapplikation. I denne applikation skal du validere de indtastede værdier, før du bogfører. I sådanne tilfælde kan du bruge sammenligningsoperatorer. Denne operator vil kontrollere mod de negative tal eller sikre, at det betalte beløb ikke overstiger det fakturerede beløb. Sammenligningsoperatorer er nyttige i sådanne situationer.
Enhver sammenligning returnerer en af to værdier, Sand eller Falsk, og aldrig et tal. Det er det resultat, en If-sætning reagerer på.
Følgende tabel viser de sammenligningsoperatorer, der er defineret i VBA.
| OperaTor | Beskrivelse |
|---|---|
| = | Lige: kontrollerer om to værdier er ens. Den bruges også som opgaveoperatør |
| < | Less end: kontrollerer om værdien til venstre er mindre end værdien til højre |
| > | Større end: kontrollerer om værdien til venstre er større end værdien til højre |
| <> | Ikke lig med: kontrollerer om to værdier er forskellige fra hinanden |
| <= | Less end eller lig med: kontrollerer om værdien til venstre er mindre end eller den samme som værdien til højre |
| >= | Større end eller lig med: kontrollerer om værdien til venstre er større end eller den samme som værdien til højre |
At se hver operator anvendt på to variabler gør det lettere at forudsige det returnerede resultat.
VBA sammenligning Operators med Eksempel
Følgende tabel viser Excel VBA-sammenligning Operatorer med eksempler og output.
| S / N | OperaTor | Eksempel | Produktion |
|---|---|---|---|
| 1 | = | Hvis x = z Så | Returnerer sandt, hvis de er ens, ellers returnerer det falsk |
| 2 | < | Hvis x < z Så | Returnerer sand, hvis x er mindre end z, ellers returnerer det falsk |
| 3 | > | Hvis x > z Så | Returnerer sand, hvis x er større end z, ellers returnerer det falsk |
| 4 | <> | Hvis x <> z Så | Returnerer sandt, hvis de ikke er ens, ellers returnerer det falsk |
| 5 | <= | Hvis x <= z Så | Returnerer sand, hvis x er mindre end eller lig med z, ellers returnerer det falsk |
| 6 | >= | Hvis x >= z, så | Returnerer sand, hvis x er større end eller lig med z, ellers returnerer det falsk |
Eksempel på kildekode
Lige sammenligning OperaTor
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
HER,
- "Hvis 2 = 1 Så... Ellers... Afslut hvis" bruger if-sætningen til at evaluere betingelsen "2 = 1"
- "MsgBox... " Er en indbygget funktion, der viser en beskedboks.
- Den første parameter "True" eller "False" er, hvad der vil blive vist i meddelelsesboksen. I vores eksempel er 2 ikke lig med 1, derfor vil den vise "falsk" i meddelelsesboksen.
- Den anden parameter "vbOKOnly" er den knap, der vises i meddelelsesboksen
- Den tredje parameter "Lige Operator” er titlen på beskedboksen.
Udførelse af ovenstående kode giver følgende resultater
Den enkelte test er den enkleste form. Ægte makroer kombinerer sammenligninger og forgreninger mellem flere resultater.
Sådan bruger du sammenligning Operators i en If-sætning
En sammenligningsoperator er sjældent nyttig i sig selv. Dens sandt- eller falsk-resultat føres til en beslutningsstruktur, og If-sætningen er den, du vil bruge mest. Eksemplet nedenfor bedømmer en score, der er gemt i celle A1, og resultatet skrives ved siden af.
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
Makroen læser scoren én gang og tester den derefter i rækkefølge mod tre betingelser. Fire punkter forklarer, hvorfor den opfører sig, som den gør.
- Orden er vigtig: VBA stopper ved den første gren, der returnerer True. Placering Score >= 50 før Score >= 90 ville betegne enhver highscore som en beståelse.
- Ellers er det altafgørende: Enhver værdi, der fejler i hver tidligere test, falder igennem til Else, så intet input forbliver ubehandlet.
- Ingen kædebinding: VBA kan ikke læse 0 <= Score <= 100. Skrive Hvis score >= 0 og score <= 100, så ved hjælp af logiske operatører i stedet.
- Samme test, andre strukturer: Den identiske betingelse styrer Do While og Select Case, så operatorerne overføres til hver løkke, du skriver.
💡 Tip: Deklarer variablen med en numerisk type, som vist med Dim score så længeHvis værdien forbliver en variantholdingstekst, "9" > "10" returnerer True, fordi sammenligningen udføres tegn for tegn.
Sammenligning af tekst og datoer i VBA
Numbers sammenlign præcis som aritmetik antyder, men tekst og datoer følger deres egne regler, og begge overrasker begyndere.
Strenge sammenlignes ét tegn ad gangen ved hjælp af deres sorteringsposition, så "Apple" < "Banan" returnerer True. Som standard skelner sammenligningen mellem store og små bogstaver, hvilket betyder, at "guru99" = "Guru99” returnerer Falsk. Placering Mulighed Sammenlign tekst øverst i modulet får alle strengsammenligninger i det pågældende modul til at ignorere store og små tilfælde. For en enkelt test uden at ændre modulet, brug StrComp med argumentet vbTextCompare.
Datoer gemmes som serienumre talt fra 30. december 1899, så de kan sammenlignes direkte med de samme seks operatorer. Hvis Forfaldsdato < Dato Så registrerer korrekt en forfalden vare, fordi Date returnerer den aktuelle systemdato som den samme type serienummer. Den ene trap er en dato, der gemmes som tekst: "01/02/2026" læst fra en importeret fil er en streng, ikke en dato, og sammenlignes alfabetisk. Konverter den med CDate, før du tester den.
At kende reglerne for hver type fjerner de fleste overraskelser, men erfarne udviklere oplever stadig et par fejl.
Almindelige fejl ved sammenligning af værdier i VBA
De fem problemer nedenfor forklarer de fleste sammenligninger, der giver et uventet resultat.
- Opgave forvekslet med sammenligning: Uden for en betingelse, x = 5 gemmer 5 i x. Inde i If tester de samme symboler lighed. VBA har ingen separat ==-operator, så læs konteksten omhyggeligt.
- Test Double værdier for nøjagtig lighed: Gemt præcision betyder, at 0.1 + 0.2 = 0.3 returnerer Falsk. Sammenlign i stedet den afrundede forskel, for eksempel Hvis Abs(a – b) < 0.000001, så.
- Sammenligning af hvad som helst med Null: Null er ikke lig med noget, ikke engang en anden Null. Test med IsNull i stedet for = Nul.
- Sammenligning af tekst med et tal: En celle, der indeholder "100" som tekst, er ikke lig med tallet 100. Konverter med CLng eller CDbl før testen.
- Læser .Text i stedet for .Value: Egenskaben .Text returnerer det viste, hvilket er afkortet af kolonnebredde og formatering. Sammenlign altid .Value.
Download ovenstående Excel-fil Code

