VBA-vergelijking Operators: Niet gelijk, Less dan of gelijk aan
⚡ Slimme samenvatting
VBA-vergelijking OperaOperatoren testen een waarde tegen een andere en retourneren Waar of Onwaar. Deze pagina definieert de zes operatoren, laat zien hoe ze in een If-statement worden gebruikt, legt uit hoe tekst en datums worden vergeleken en geeft een overzicht van de fouten die tot onjuiste resultaten leiden.

VBA-vergelijking Operaverdraaid
Dit zijn operatoren die worden gebruikt om waarden te vergelijken. Vergelijkingsoperatoren zijn onder andere gelijk aan, kleiner dan, groter dan en niet gelijk aan.
Vergelijkingsoperatoren worden gebruikt om waarden te vergelijken voor validatiedoeleinden. Stel dat u aan het ontwikkelen bent...ping Een eenvoudige kassatoepassing. In deze toepassing wilt u de ingevoerde waarden valideren voordat u de transactie verwerkt. In dergelijke gevallen kunt u vergelijkingsoperatoren gebruiken. Deze operator controleert op negatieve getallen of zorgt ervoor dat het betaalde bedrag het gefactureerde bedrag niet overschrijdt. Vergelijkingsoperatoren zijn in dergelijke situaties erg handig.
Elke vergelijking levert een van de twee waarden op: Waar of Onwaar, en nooit een getal. Dat resultaat is waarop een If-statement reageert.
De volgende tabel bevat de vergelijkingsoperatoren die zijn gedefinieerd in VBA.
| Operator | Beschrijving |
|---|---|
| = | Equal: controleert of twee waarden gelijk zijn. Wordt ook gebruikt als toewijzingsoperator |
| < | Less dan: controleert of de waarde aan de linkerkant kleiner is dan de waarde aan de rechterkant |
| > | Groter dan: controleert of de waarde aan de linkerkant groter is dan de waarde aan de rechterkant. |
| <> | Niet gelijk aan: controleert of twee waarden van elkaar verschillen. |
| <= | Less kleiner dan of gelijk aan: controleert of de waarde aan de linkerkant kleiner is dan of gelijk is aan de waarde aan de rechterkant. |
| >= | Groter dan of gelijk aan: controleert of de waarde aan de linkerkant groter is dan of gelijk is aan de waarde aan de rechterkant. |
Door te zien hoe elke operator op twee variabelen wordt toegepast, is het resultaat gemakkelijker te voorspellen.
VBA-vergelijking Operators met Voorbeeld
De volgende tabel toont een vergelijking van Excel VBA Operators met voorbeelden en uitvoer.
| S / N | Operator | Voorbeeld | uitgang |
|---|---|---|---|
| 1 | = | Als x = z Dan | Retourneert waar als ze gelijk zijn, anders retourneert het onwaar |
| 2 | < | Als x < z Dan | Retourneert waar als x kleiner is dan z, anders retourneert het onwaar |
| 3 | > | Als x > z Dan | Retourneert waar als x groter is dan z, anders retourneert het onwaar |
| 4 | <> | Als x <> z Dan | Retourneert waar als ze niet gelijk zijn, anders retourneert het onwaar |
| 5 | <= | Als x <= z Dan | Retourneert waar als x kleiner is dan of gelijk is aan z, anders retourneert het onwaar |
| 6 | >= | Als x >= z dan | Retourneert waar als x groter is dan of gelijk is aan z, anders retourneert het onwaar |
Voorbeeld broncode
Gelijke vergelijking Operator
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
HIER,
- “Als 2 = 1 Dan… Anders… Einde Als” gebruikt de if-instructie om de voorwaarde “2 = 1” te evalueren
- “BerichtBox... " Is een ingebouwde functie die een berichtenvenster weergeeft.
- De eerste parameter "True" of "False" is wat er in het berichtenvak wordt weergegeven. In ons voorbeeld is 2 niet gelijk aan 1, daarom wordt "false" weergegeven in het berichtenvak.
- De tweede parameter “vbOKOnly” is de knop die in het berichtvak wordt weergegeven
- De derde parameter “Gelijk Operator” is de titel van het berichtvak.
Het uitvoeren van de bovenstaande code geeft de volgende resultaten
Die ene test is de eenvoudigste vorm. Echte macro's combineren vergelijkingen en vertakken zich tussen verschillende uitkomsten.
Hoe gebruik je vergelijkingen? Operators in een If-instructie
Een vergelijkingsoperator is zelden op zichzelf nuttig. Het resultaat (waar of onwaar) wordt doorgegeven aan een beslissingsstructuur, en de 'als'-instructie is degene die u het meest zult gebruiken. Het onderstaande voorbeeld beoordeelt een score in cel A1 en schrijft het resultaat ernaast.
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
De macro leest de score eenmaal in en test deze vervolgens aan de hand van drie voorwaarden in de aangegeven volgorde. Vier punten leggen uit waarom de macro zich zo gedraagt.
- Volgorde is belangrijk: VBA stopt bij de eerste vertakking die True retourneert. Plaatsen Score >= 50 vaardigheden Score >= 90 zou elke hoge score als voldoende bestempelen.
- Anders is de verzamelterm: Elke waarde die bij een eerdere test niet slaagt, wordt doorgegeven aan de 'else'-instructie, waardoor geen enkele invoer onverwerkt blijft.
- Geen koppeling: VBA kan niet lezen 0 <= Score <= 100. Schrijven Als Score >= 0 en Score <= 100 dan met de logische operatoren gebruiken.
- Dezelfde test, andere structuren: Dezelfde voorwaarde ligt ten grondslag aan Do While en Select Case, dus de operatoren worden overgedragen naar elke lus die je schrijft.
💡Tip: Declareer de variabele met een numeriek type, zoals weergegeven met Dim Score ZolangAls de waarde een Variant blijft die tekst bevat, “9” > “10” Retourneert True omdat de vergelijking teken voor teken wordt uitgevoerd.
Tekst en datums vergelijken in VBA
Numbers Vergelijken werkt precies zoals de rekenkunde suggereert, maar tekst en datums volgen hun eigen regels, en beide verrassen beginners.
Strings worden teken voor teken vergeleken op basis van hun sorteerpositie, dus "Apple" < "Banana" geeft True terug. Standaard is de vergelijking hoofdlettergevoelig, wat betekent dat "guru99" = "Guru"99" geeft False terug. Plaatsen Optie Vergelijk tekst Bovenaan de module zorgt ervoor dat bij elke tekenreeksvergelijking in die module geen rekening wordt gehouden met hoofdlettergevoeligheid. Voor een enkele test zonder de module te wijzigen, gebruikt u StrComp met het argument vbTextCompare.
Datums worden opgeslagen als serienummers, geteld vanaf 30 december 1899, zodat ze direct overeenkomen met dezelfde zes operatoren. Schrijven Als de vervaldatum kleiner is dan de datum, dan Detecteert correct een te laat ingeleverd item, omdat Date de huidige systeemdatum retourneert als hetzelfde type serienummer. De enige valkuil is een datum die als tekst is opgeslagen: "01/02/2026" gelezen uit een geïmporteerd bestand is een tekenreeks, geen datum, en wordt alfabetisch vergeleken. Converteer deze met CDate voordat u deze test.
Als je de regels voor elk type kent, voorkom je de meeste verrassingen, maar zelfs ervaren ontwikkelaars kunnen nog steeds tegen een paar fouten aanlopen.
Veelgemaakte fouten bij het vergelijken van waarden in VBA
De vijf onderstaande problemen verklaren de meeste vergelijkingen die een onverwacht resultaat opleveren.
- Toewijzing ten onrechte aangezien voor vergelijking: Buiten een bepaalde voorwaarde, x = 5 slaat 5 op in x. Binnen de If-instructie worden dezelfde symbolen gebruikt om gelijkheid te testen. VBA heeft geen aparte == operator, dus lees de context zorgvuldig.
- Testen Double Waarden voor exacte gelijkheid: De opgeslagen precisie betekent dat 0.1 + 0.2 = 0.3 False retourneert. Vergelijk in plaats daarvan het afgeronde verschil, bijvoorbeeld Als Abs(a – b) < 0.000001 Dan.
- Iets vergelijken met Null: Null is aan niets gelijk, zelfs niet aan een andere Null. Test met IsNull in plaats van = Null.
- Tekst vergelijken met een getal: Een cel met de tekst "100" is niet gelijk aan het getal 100. Converteer met CLng of CDbl vóór de test.
- Het lezen van .Text in plaats van .Value: De eigenschap .Text geeft de weergegeven tekst terug, die wordt afgekapt op basis van kolombreedte en opmaak. Vergelijk altijd met .Value.
Download het bovenstaande Excel-bestand. Code

