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

