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.

  • ​ Doel: Vergelijkingsoperatoren valideren gegevens door een voorwaarde te testen die als Waar of Onwaar wordt beoordeeld.
  • 🔢 Zes OperaTorens: Gelijk aan, kleiner dan, groter dan, niet gelijk aan, kleiner dan of gelijk aan, en groter dan of gelijk aan.
  • 🔁 Dubbele rol: Het gelijkheidsteken wordt gebruikt om waarden binnen een voorwaarde te vergelijken en om waarden buiten een voorwaarde een waarde toe te kennen.
  • 🧪 Als-instructie: Elke vergelijking wordt binnen een If-, ElseIf- of Do While-structuur geplaatst om te bepalen welke code wordt uitgevoerd.
  • 🔤 Tekst en datums: Tekstreeksen worden teken voor teken vergeleken en datums worden vergeleken als serienummers.
  • ⚠️ Precisieval: Twee Double Waarden die er identiek uitzien, kunnen een gelijkheidstest niet doorstaan, vergelijk daarom het verschil in afgeronde waarden.

VBA-vergelijking Operaverdraaid

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

Gelijk Operator

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

Veelgestelde vragen

Nee. VBA evalueert de eerste vergelijking als Waar of Onwaar en vergelijkt dat resultaat vervolgens met 10, wat een misleidend antwoord oplevert. Schrijf de twee tests afzonderlijk en verbind ze met een logische AND-operator.

Een 'like'-bewerking vergelijkt een tekenreeks met een patroon in plaats van een exacte waarde. Jokertekens zijn onder andere het sterretje (*) voor willekeurige tekens en het vraagteken (*) voor één teken, bijvoorbeeld "Guru99” Zoals “Guru*” retourneert True.

Gebruik de operator 'Is', zoals in 'Als ws is niets, dan'. Het gelijkheidsteken vergelijkt waarden, terwijl 'Is' controleert of twee objectvariabelen naar hetzelfde object verwijzen. Dit is de enige geldige test voor objecten.

Ja. Beschrijf de regel in eenvoudige bewoordingen, bijvoorbeeld: markeer alle bestellingen van meer dan 500 stuks die vóór vandaag zijn geplaatst, en een AI-assistent geeft de bijbehorende 'als'-voorwaarde terug. Controleer de grenswaarden voordat u erop vertrouwt.

Ja. Plak het If-blok en een AI-assistent. traces welke tak elke waarde onderschept, en wijst vervolgens op een onbereikbare ElseIf of een vergelijking tussen tekst en een getal. Bevestig de oplossing met stapping via de code.

Vat dit bericht samen met: