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: