Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Operatoren | VBA Fundamentals
Excel VBA voor Bedrijfsautomatisering

Werken met Operatoren

Veeg om het menu te tonen

Variabelen declareren geeft je een plek om waarden op te slaan. Operatoren zijn de manier waarop je deze waarden combineert, vergelijkt en test — wat in feite betekent dat je een bedrijfsregel uitdrukt in code. "Is voorraad lager dan het bestelniveau?" is een vergelijkingsoperator. "Bestel bij als voorraad laag is EN het product Elektronica is" is een logische operator.

Rekenkundige operatoren

De meeste hiervan werken precies zoals je van een rekenmachine zou verwachten, maar VBA heeft twee delingsoperatoren die daadwerkelijk verschillende dingen doen:

Dim total As Double
total = 45 * 3      ' multiplication → 135
total = 100 / 3     ' division → 33.33...
total = 100 \ 3     ' integer division → 33 (drops remainder)
total = 100 Mod 3   ' remainder only → 1
total = 2 ^ 3       ' exponent → 8

De backslash (\) en Mod zijn de twee die mensen vaak verwarren, omdat ze op elkaar lijken maar tegenovergestelde vragen beantwoorden. 100 \ 3 beantwoordt de vraag "hoe vaak past 3 geheel in 100?" — het antwoord is 33, en wat overblijft wordt genegeerd. 100 Mod 3 beantwoordt de spiegelvraag: "wat blijft er over nadat 3 zo vaak mogelijk geheel in 100 is gegaan?" — het antwoord is 1. Samen vormen 33 groepjes van 3 plus een rest van 1 precies 100 — dat is geen toeval, dat is precies waar deze twee operatoren voor bedoeld zijn. Deze combinatie gebruik je bijvoorbeeld om te berekenen "hoeveel volle dozen van 3 kan ik vullen, en hoeveel eenheden blijven er over voor een gedeeltelijke doos?" of om te controleren of een rijnummer even is (i Mod 2 = 0).

Vergelijkingsoperatoren

Deze geven True of False terug:

44 > 30      ' True
44 = 44      ' True
"Office" = "office"   ' False — VBA's default string comparison IS case-sensitive
44 <> 30     ' True (not equal)

Logische operatoren

Deze combineren twee of meer vergelijkingen tot één True/False-resultaat — precies hoe een bedrijfsregel met meerdere voorwaarden wordt uitgedrukt:

If category = "Electronics" And stock < 30 Then
    ' triggers only if BOTH are true
End If
 
If category = "Office" Or category = "Electronics" Then
    ' triggers if EITHER is true
End If
 
If Not (stock < reorderLevel) Then
    ' triggers if stock is NOT below reorder level
End If

And vereist dat elke voorwaarde die ermee verbonden is True is voordat de hele expressie True wordt — het eerste voorbeeld wordt dus alleen uitgevoerd voor Elektronica-producten die ook daadwerkelijk een lage voorraad hebben, niet voor elk product met lage voorraad ongeacht de categorie. Or vereist dat slechts één voorwaarde True is, wat handig is om te controleren of een waarde tot een kleine set toegestane waarden behoort. Not keert simpelweg een True/False-resultaat om naar het tegenovergestelde — vaak gebruikt, zoals in het derde voorbeeld, om een regel uit te drukken als "NIET de ongunstige situatie" wanneer dat natuurlijker leest dan het direct formuleren van de gunstige situatie.

Tekst samenvoegen

Voegt tekst samen met & (niet +, want VBA gebruikt + voor getallen):

Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134

Let op: currentStock is een getal (134), geen tekst, maar wordt toch zonder conversiestap aan de string toegevoegd — VBA zet automatisch een getal om naar tekst wanneer je & gebruikt. Dat gemak is precies waarom & de voorkeur heeft boven + bij het samenvoegen van tekst: als je "Stock: " + currentStock zou schrijven, zou VBA proberen de hele expressie als rekenkundig te interpreteren en een foutmelding geven of een verwarrend resultaat opleveren, afhankelijk van de context. & betekent altijd "voeg samen als tekst," zonder enige dubbelzinnigheid.

Opdracht

  1. Gebruik de gegevens van de Monitor Arm (Price 89.99, Stock 18, Reorder Level 10) en schrijf een expressie die controleert of de voorraad kleiner dan of gelijk is aan het bestelniveau plus 10 — een "bijna op" waarschuwing in plaats van een harde melding.
  2. Bouw een samengevoegd bericht: "Monitor Arm is at 18 units (reorder at 10)" met behulp van variabelen, niet hardgecodeerde tekst.
Hint
expand arrow

1. De "bijna bereikt"-uitdrukking

  • Je hebt eerst drie variabelen nodig: iets om de voorraad (18) vast te houden, iets voor het bestelniveau (10), en dan een uitdrukking die deze vergelijkt.
  • "Kleiner dan of gelijk aan" is één enkele vergelijkingsoperator <=.
  • De uitdrukking "bestelniveau plus 10" betekent dat je de voorraad niet direct vergelijkt met 10 — je vergelijkt deze met een berekende waarde. Schrijf die optelling direct in de vergelijking: stock <= reorderLevel + 10.
  • Om het resultaat daadwerkelijk te zien, wijs je het toe aan een Boolean-variabele.
  • Reken handmatig uit wat 10 + 10 is voordat je het uitvoert, zodat je weet of 18 <= 20 True of False moet opleveren, en controleer of je code hiermee overeenkomt.

2. Het bericht opbouwen

  • De operator die tekst samenvoegt is &, niet +.
  • Bekijk het gewenste resultaat stuk voor stuk: "Monitor Arm is at " + (het voorraadnummer) + " units (reorder at " + (het bestelniveau) + ")". Tel de onderdelen — het zijn er vijf, afwisselend letterlijke tekst tussen aanhalingstekens en een variabele.
  • De opdracht zegt "gebruik variabelen, geen hardgecodeerde tekst" — dat betekent dat de 18 en 10 in je uiteindelijke bericht uit je voorraad- en reorderLevel-variabelen moeten komen, niet als getypte getallen in de string.
  • Een getal samenvoegen met & vereist geen conversie — VBA zet het automatisch om naar tekst, dus je kunt een numerieke variabele direct in de string samenvoegen.
  • Bouw het eerst op in één String-variabele (message = ...), en toon het dan met MsgBox message zodat je kunt controleren of het precies overeenkomt met de verwachte uitvoer, inclusief de haakjes en spaties.

Of gebruik de volgende code

Open Section_2_VBA_Fundamentals.xlsm, druk op Alt+F11, en gebruik de module waarin je voor deze werkmap werkt (voeg er een toe via Invoegen → Module als je er nog geen hebt — volg hetzelfde patroon als modIntro in Sectie 1, je zou deze modFundamentals kunnen noemen).

Sub MonitorArmCheck()
    Dim stock As Integer
    Dim reorderLevel As Integer
    Dim isGettingClose As Boolean
    Dim message As String

    stock = 18
    reorderLevel = 10

    ' Part 1 — the "getting close" check
    isGettingClose = stock <= reorderLevel + 10
    MsgBox isGettingClose

    ' Part 2 — the concatenated message
    message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
    MsgBox message
End Sub

Klik ergens in de Sub en druk dan op F5. Je zou twee berichtenvensters na elkaar moeten zien verschijnen — eerst True (omdat 18 ≤ 20), daarna de zin.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 2
some-alt