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.

  • ⚖️ Formål: Sammenligningsoperatorer validerer data ved at teste en betingelse, der evalueres til Sand eller Falsk.
  • 🔢 Six Operators: Lig med, mindre end, større end, ikke lig med, mindre end eller lig med og større end eller lig med.
  • 🔁 Dobbeltrolle: Lighedstegnet sammenligner inden for en betingelse og tildeler en værdi uden for en.
  • 🧪 Hvis-sætning: Hver sammenligning placeres i If, ElseIf eller Do While for at styre, hvilken kode der kører.
  • 🔤 Tekst og datoer: Strenge sammenlignes tegn for tegn, og datoer sammenlignes som serienumre.
  • ⚠️ Præcisionsfælde: to Double Værdier, der ser identiske ud, kan ikke udføre en lighedstest, så sammenlign en afrundet forskel.

VBA sammenligning Operatorer

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

Ens OperaTor

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

Ofte Stillede Spørgsmål

Nej. VBA evaluerer den første sammenligning til Sandt eller Falsk og sammenligner derefter resultatet med 10, hvilket giver et misvisende svar. Skriv de to tests separat og forbind dem med Og.

Ligesom sammenligner en streng med et mønster i stedet for en præcis værdi. Jokertegn inkluderer asterisken for alle tegn og spørgsmålstegnet for ét tegn, så "Guru99” Synes godt om “Guru*” returnerer Sandt.

Brug Is-operatoren, som i Hvis ws er ingenting, så. Lighedstegnet sammenligner værdier, mens Is kontrollerer, om to objektvariabler peger på det samme objekt, hvilket er den eneste gyldige test for objekter.

Ja. Beskriv reglen med klare ord, f.eks. hvis du markerer enhver ordre over 500, der er afgivet før i dag, returnerer en AI-assistent den matchende If-betingelse. Kontroller grænseværdierne, før du stoler på den.

Ja. Indsæt If-blokken og en AI-assistent tracangiver hvilken gren der fanger hver værdi, og peger derefter på en uopnåelig ElseIf eller en sammenligning mellem tekst og et tal. Bekræft rettelsen trin for trinping gennem koden.

Opsummer dette indlæg med: