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.

  • 🇧🇷 Formål: Sammenligningsoperatorer validerer data ved å teste en betingelse som evalueres til Sann eller Usann.
  • 🔢 Seks Operators: Lik, mindre enn, større enn, ikke lik, mindre enn eller lik, og større enn eller lik.
  • 🔁 Dobbel rolle: Likhetstegnet sammenligner innenfor en betingelse og tilordner en verdi utenfor en.
  • 🧪 Hvis-setning: Hver sammenligning plasseres i If, ElseIf eller Do While for å kontrollere hvilken kode som kjører.
  • 🔤 Tekst og datoer: Strenger sammenlignes tegn for tegn, og datoer sammenlignes som serienumre.
  • ⚠️ Presisjonsfelle: To Double Verdier som ser identiske ut kan ikke bestå en likhetstest, så sammenlign en avrundet differanse.

VBA sammenligning Operatorer

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

Lik Operator

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

Spørsmål og svar

Nei. VBA evaluerer den første sammenligningen til Sant eller Usant, og sammenligner deretter resultatet med 10, noe som gir et misvisende svar. Skriv de to testene separat og koble dem sammen med Og.

Like sammenligner en streng med et mønster i stedet for en eksakt verdi. Jokertegn inkluderer stjernen for alle tegn og spørsmålstegnet for ett tegn, så «Guru99” Liker “Guru*” returnerer Sann.

Bruk Is-operatoren, som i Hvis ws er ingenting, så. Likhetstegnet sammenligner verdier, mens Is sjekker om to objektvariabler peker på det samme objektet, som er den eneste gyldige testen for objekter.

Ja. Beskriv regelen med enkle ord, for eksempel «flagg» enhver ordre over 500 som er lagt inn før i dag, og en AI-assistent returnerer den samsvarende If-betingelsen. Sjekk grenseverdiene før du stoler på den.

Ja. Lim inn Hvis-blokken og en AI-assistent tracangir hvilken gren som fanger hver verdi, og peker deretter ut en uoppnåelig ElseIf eller en sammenligning mellom tekst og et tall. Bekreft løsningen trinn for trinnping gjennom koden.

Oppsummer dette innlegget med: