VBA sammenligning Operators: Ikke like, Less enn eller lik
⚡ Smart oppsummering
VBA sammenligning Operatorer tester én verdi mot en annen og returnerer True eller Usann. Denne siden definerer de seks operatorene, viser dem i en If-setning, forklarer hvordan tekst og datoer sammenlignes, og lister opp feilene som gir feil resultater.

VBA sammenligning Operatorer
Dette er operatorer som brukes til å sammenligne verdier. Sammenligningsoperatorer inkluderer lik, mindre enn, større enn og ikke lik.
Sammenligningsoperatorer brukes til å sammenligne verdier for valideringsformål. La oss si at du utviklerping et enkelt salgsstedsprogram. I dette programmet vil du validere verdiene som er angitt før du posterer. I slike tilfeller kan du bruke sammenligningsoperatorer. Denne operatoren vil sjekke mot de negative tallene eller for å sikre at det betalte beløpet ikke overstiger det fakturerte beløpet. Sammenligningsoperatorer er nyttige i slike situasjoner.
Hver sammenligning returnerer én av to verdier, Sann eller Usann, og aldri et tall. Det er dette resultatet en If-setning reagerer på.
Følgende tabell viser sammenligningsoperatørene definert i VBA.
| Operator | Tekniske beskrivelser |
|---|---|
| = | Lik: sjekker om to verdier er like. Den brukes også som oppdragsoperatør |
| < | Less enn: sjekker om verdien til venstre er mindre enn verdien til høyre |
| > | Større enn: sjekker om verdien til venstre er større enn verdien til høyre |
| <> | Ikke lik: sjekker om to verdier er forskjellige fra hverandre |
| <= | Less enn eller lik: sjekker om verdien til venstre er mindre enn eller lik verdien til høyre |
| >= | Større enn eller lik: sjekker om verdien til venstre er større enn eller lik verdien til høyre |
Å se hver operator brukt på to variabler gjør det enklere å forutsi det returnerte resultatet.
VBA sammenligning Operators med Eksempel
Følgende tabell viser Excel VBA-sammenligning Operatorer med eksempler og utgang.
| S / N | Operator | Eksempel | Produksjon |
|---|---|---|---|
| 1 | = | Hvis x = z Da | Returnerer sann hvis de er like, ellers returnerer den usann |
| 2 | < | Hvis x < z Da | Returnerer sant hvis x er mindre enn z, ellers returnerer det usann |
| 3 | > | Hvis x > z Da | Returnerer sant hvis x er større enn z, ellers returnerer det usann |
| 4 | <> | Hvis x <> z Da | Returnerer sann hvis de ikke er like, ellers returnerer den usann |
| 5 | <= | Hvis x <= z Da | Returnerer sann hvis x er mindre enn eller lik z, ellers returnerer den usann |
| 6 | >= | Hvis x >= z, så | Returnerer sant hvis x er større enn eller lik z, ellers returnerer det usann |
Eksempel på kildekode
Lik sammenligning Operator
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
HER,
- "Hvis 2 = 1 Da... Ellers... Avslutt Hvis" bruker if-setningen for å evaluere betingelsen "2 = 1"
- "MsgBox... " Er en innebygd funksjon som viser en meldingsboks.
- Den første parameteren "True" eller "False" er det som vises i meldingsboksen. I vårt eksempel er 2 ikke lik 1, derfor vil den vise "false" i meldingsboksen.
- Den andre parameteren "vbOKOnly" er knappen som vises i meldingsboksen
- Den tredje parameteren "Equal Operator» er tittelen på meldingsboksen.
Utførelse av koden ovenfor gir følgende resultater
Den enkle testen er den enkleste formen. Ekte makroer kombinerer sammenligninger og forgreninger mellom flere utfall.
Slik bruker du sammenligning Operatorer i en If-setning
En sammenligningsoperator er sjelden nyttig alene. Resultatet «Sant» eller «Usant» mates inn i en beslutningsstruktur, og If-setningen er den du vil bruke mest. Eksemplet nedenfor vurderer en poengsum som er lagret i celle A1 og skriver resultatet ved siden av.
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 leser poengsummen én gang, og tester den deretter mot tre betingelser i rekkefølge. Fire punkter forklarer hvorfor den oppfører seg som den gjør.
- Ordresaker: VBA stopper ved den første grenen som returnerer True. Plassering Poengsum >= 50 før du Poengsum >= 90 ville stemple hver høy poengsum som bestått.
- Ellers er det en fellesnevner: Enhver verdi som feiler i hver tidligere test faller gjennom til Else, slik at ingen input blir liggende ubehandlet.
- Ingen kjetting: VBA kan ikke lese 0 <= Poengsum <= 100Skriv Hvis poengsum >= 0 og poengsum <= 100, så bruker logiske operatører i stedet.
- Samme test, andre strukturer: Den identiske betingelsen styrer Do While og Select Case, slik at operatorene overføres til hver løkke du skriver.
💡 Tips: Deklarer variabelen med en numerisk type, som vist med Dim poengsum så lengeHvis verdien forblir en variantholdingstekst, «9» > «10» returnerer True fordi sammenligningen gjøres tegn for tegn.
Sammenligning av tekst og datoer i VBA
Numbers sammenlign nøyaktig slik aritmetikken antyder, men tekst og datoer følger sine egne regler, og begge overrasker nybegynnere.
Strenger sammenlignes ett tegn om gangen ved hjelp av sorteringsposisjonen, så «Apple» < «Banan» returnerer True. Som standard skiller sammenligningen mellom store og små bokstaver, noe som betyr at «guru99» = «Guru99” returnerer Usann. Plassering Alternativ Sammenlign tekst øverst i modulen får alle strengsammenligninger i den modulen til å ignorere tilfeller. For en enkelt test uten å endre modulen, bruk StrComp med vbTextCompare-argumentet.
Datoer lagres som serienumre telt fra 30. desember 1899, slik at de kan sammenlignes direkte med de samme seks operatorene. Hvis forfallsdato < dato, så oppdager riktig en forfalt vare, fordi Date returnerer gjeldende systemdato som samme type serienummer. Den ene fellen er en dato som holdes som tekst: «01/02/2026» lest fra en importert fil er en streng, ikke en dato, og sammenlignes alfabetisk. Konverter den med CDate før du tester den.
Å kjenne reglene for hver type fjerner de fleste overraskelser, men erfarne utviklere kan fortsatt oppleve noen feil.
Vanlige feil når man sammenligner verdier i VBA
De fem problemene nedenfor forklarer de fleste sammenligningene som gir et uventet resultat.
- Oppgave feilaktig for sammenligning: Utenfor en betingelse, x = 5 lagrer 5 i x. Inne i If tester de samme symbolene likhet. VBA har ingen separat ==-operator, så les konteksten nøye.
- Testing Double verdier for eksakt likhet: Lagret presisjon betyr at 0.1 + 0.2 = 0.3 returnerer Usann. Sammenlign den avrundede differansen i stedet, for eksempel Hvis Abs(a – b) < 0.000001, så.
- Sammenligning av hva som helst med Null: Null er ikke lik noe som helst, ikke engang en annen Null. Test med IsNull i stedet for = Null.
- Sammenligning av tekst mot et tall: En celle som inneholder «100» som tekst er ikke lik tallet 100. Konverter med CLng eller CDbl før testen.
- Leser .Text i stedet for .Value: .Text-egenskapen returnerer det som vises, som er avkortet av kolonnebredde og formatering. Sammenlign alltid .Value.
Last ned Excel-filen ovenfor Code

