
Als je regelmatig Excel gebruikt, ben je waarschijnlijk al bekend met het schrijven van formules met functies zoals SUM, VLOOKUP of IF. Misschien heb je zelfs weleens macro's opgenomen om repetitief opmaakwerk te versnellen. Maar op een gegeven moment zijn basisformules en de macrorecorder niet meer voldoende. Om de ware kracht van Excel te ontketenen en complexe workflows te automatiseren, moet je achter de schermen kijken en je eigen code schrijven.
Welkom bij Visual Basic for Applications (VBA), de ingebouwde programmeertaal van Excel. Door VBA te leren kun je op een fundamenteel niveau met Excel communiceren en een statische spreadsheet veranderen in een dynamische softwaretoepassing. In deze tutorial behandelen we de basisconcepten van VBA—variabelen, lussen (loops) en voorwaarden—en begeleiden we je stap voor stap bij het schrijven van je allereerste werkende programma.
Voordat we de code in duiken, vraag je je misschien af waarom je de moeite zou nemen om een programmeertaal te leren terwijl Excel al boordevol krachtige functies zit. Als je net begint, raden we sterk aan om eerst de basis onder de knie te krijgen. Je kunt onze Complete beginnersgids voor Excel 2025 doornemen om ervoor te zorgen dat je basis solide is.
Zodra je echter vertrouwd bent met de standaard Excel-tools, biedt VBA ongelooflijke voordelen:
Om je eerste Excel-programma te schrijven, heb je toegang nodig tot het tabblad Ontwikkelaars, dat standaard verborgen is.
Je ziet nu het tabblad Ontwikkelaars op je lint. Dit tabblad is je commandocentrum voor alles wat met programmeren te maken heeft. Klik vanaf hier op de knop Visual Basic (of druk op Alt + F11 op je toetsenbord) om de Visual Basic Editor (VBE) te openen. Dit is de omgeving waar je je code schrijft, bewerkt en test.
Wanneer je de VBE voor de eerste keer opent, kan het er wat intimiderend uitzien, vergelijkbaar met software uit de jaren '90. Maak je geen zorgen; je hoeft je alleen maar te concentreren op een paar belangrijke gebieden:
Om code te kunnen typen, moet je een module invoegen. Klik met de rechtermuisknop op je werkmap in de Projectverkenner, selecteer Invoegen en klik vervolgens op Module. Er verschijnt een leeg wit scherm. Je bent nu klaar om te programmeren.
Voordat we het definitieve programma schrijven, moet je de drie pijlers van basisprogrammering in VBA begrijpen: Variabelen, Voorwaarden en Lussen.
Beschouw een variabele als een tijdelijke opslagcontainer in het geheugen van je computer. Je gebruikt variabelen om gegevens vast te houden die kunnen veranderen terwijl je programma draait. In VBA is het een best practice om je variabelen te 'declareren' met de Dim-instructie (kort voor Dimension), waarmee je Excel vertelt welk type gegevens de container zal bevatten.
| Gegevenstype | Wat het bevat | Voorbeeld declaratie |
|---|---|---|
| String | Teksttekens. | Dim employeeName As String |
| Integer | Gehele getallen tussen -32.768 en 32.767. | Dim rowCount As Integer |
| Long | Grotere gehele getallen (gebruik dit altijd voor het tellen van rijen in moderne Excel-versies). | Dim lastRow As Long |
| Double | Getallen met decimalen (bijv. valuta, percentages). | Dim totalSales As Double |
| Boolean | True (Waar) of False (Onwaar) waarden. | Dim isComplete As Boolean |
| Range | Een object dat een cel of een groep cellen vertegenwoordigt. | Dim targetCell As Range |
VBA werkt door 'Objecten' te manipuleren. Excel kent een strikte hiërarchie van objecten die je moet doorlopen om VBA precies te vertellen wat er moet veranderen. De hiërarchie stroomt van breed naar specifiek:
Application > Workbook > Worksheet > Range
Als je bijvoorbeeld de waarde van cel A1 op Blad1 wilt wijzigen, zou de VBA-instructie er technisch zo uitzien: Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = "Hello". Gelukkig kun je dit inkorten tot Range("A1").Value = "Hello" als je in de actieve werkmap werkt.
Net als bij de standaard IF-functie (ALS-functie in het Nederlands), stellen voorwaarden je code in staat om beslissingen te nemen op basis van criteria. Als aan een voorwaarde wordt voldaan, doet de code het ene; zo niet, dan doet het iets anders.
If Range("A1").Value > 100 Then
Range("B1").Value = "Over Budget"
Else
Range("B1").Value = "On Track"
End If
Lussen zijn de echte magie van VBA. Ze stellen je in staat om hetzelfde blok code keer op keer uit te voeren zonder het honderden keren te hoeven uitschrijven. De meest voorkomende lus is de For...Next-lus.
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = "Test Data"
Next i
In dit voorbeeld zal de code 10 keer een lus doorlopen, waarbij de cellen A1 tot en met A10 (Rij i, Kolom 1) worden gevuld met de tekst "Test Data".
Laten we al deze concepten samenvoegen om een realistisch probleem op te lossen. Stel je voor dat je een lijst met verkoopbedragen in Kolom A hebt, van rij 2 tot rij 20. Je wilt een programma schrijven dat door deze getallen loopt, controleert of het verkoopbedrag hoger is dan €1.000, en als dat zo is, "High Performer" in Kolom B schrijft en de cel geel markeert.
Typ de volgende code precies zoals deze wordt weergegeven in je lege module:
Sub AnalyzeSales()
' 1. Declare variables
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' 2. Define the worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 3. Find the last row with data in Column A
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 4. Loop from row 2 to the last row
For i = 2 To lastRow
' 5. Apply the condition
If ws.Cells(i, 1).Value > 1000 Then
' Mark as high performer in Column B
ws.Cells(i, 2).Value = "High Performer"
' Highlight Column B cell yellow
ws.Cells(i, 2).Interior.Color = vbYellow
' Make the text bold
ws.Cells(i, 2).Font.Bold = True
Else
' If not over 1000, leave standard text
ws.Cells(i, 2).Value = "Standard"
End If
Next i
' 6. Alert the user the macro is done
MsgBox "Sales analysis is complete!", vbInformation
End Sub
Sub AnalyzeSales(): "Sub" staat voor Subroutine. Hiermee wordt een nieuwe macro gemaakt met de naam AnalyzeSales.') wordt groen. Dit zijn opmerkingen voor jou; de computer negeert ze.Dim wordt gebruikt om ons werkblad, onze laatste rij (Long) en onze tellervariabele voor de lus (Long) te declareren.Set ws = ...: Omdat een werkblad een Object is, gebruiken we het woord "Set" om het aan onze variabele toe te wijzen.lastRow = ...: Dit is een klassieke VBA-truc. Het gaat helemaal naar de onderkant van de spreadsheet (Rows.Count), kijkt omhoog (xlUp) totdat het gegevens tegenkomt en retourneert dat rijnummer. Dit maakt onze code dynamisch, zodat deze zich aanpast ongeacht hoeveel gegevens er worden toegevoegd!For i = 2 To lastRow: Start onze lus bij rij 2 (waarbij koppen worden overgeslagen) en eindigt bij wat de laatste rij ook is.ws.Cells(i, 1) naar de cel op rij i, kolom 1 (Kolom A). We controleren of deze groter is dan 1000.Value, Interior.Color en Font.Bold te wijzigen.Next i: Vertelt Excel om terug te keren en i met 1 te verhogen om de volgende rij te controleren.MsgBox: Een leuke visuele aanwijzing die een pop-upvenster activeert om de gebruiker te laten weten dat de code succesvol is uitgevoerd.Om je code uit te voeren, kun je overal binnen de regels Sub en End Sub in de VBE klikken en op F5 op je toetsenbord drukken, of op de groene 'Afspelen'-driehoek op de bovenste werkbalk klikken.
Pro-tip voor debuggen: Probeer in plaats van op F5 te drukken, herhaaldelijk op F8 te drukken. Met F8 kun je regel voor regel door je code stappen. De actieve coderegel wordt geel gemarkeerd, zodat je precies kunt zien wat Excel op de achtergrond doet. Dit is de ultieme manier om te leren en problemen op te lossen wanneer een programma niet correct werkt.
Gefeliciteerd! Je hebt zojuist je eerste stukje automatiseringssoftware geschreven. Door variabelen, lussen en voorwaarden te begrijpen, heb je de basis ontgrendeld die nodig is voor rapporten automatiseren met Excel VBA. Met wat oefening kun je deze logica uitbreiden om hele werkmappen te doorlopen, gegevens uit meerdere bestanden samen te voegen en rommelige datasets met één klik op te schonen.
Terwijl je je reis voortzet, is het goed om in gedachten te houden dat VBA niet de enige tool is in de moderne datatoolkit. Als je de voorkeur geeft aan visuele interfaces boven coderen, kun je je verdiepen in Excel-automatisering zonder VBA: Power Automate.
Bovendien hoef je niet in je eentje te worstelen als het helemaal zelf schrijven van code, het ontcijferen van VBA-fouten of het bouwen van complexe geneste formules zoals INDEX en MATCH overweldigend aanvoelt. Je kunt altijd GPTExcel gebruiken. Beschrijf gewoon wat je nodig hebt in gewone taal (bijv. "Schrijf een VBA-macro die alle gele cellen op Blad1 wist"), en de AI-assistent genereert onmiddellijk de exacte code of formule.
Er is geen eerdere programmeerervaring vereist. VBA is specifiek ontworpen om toegankelijk te zijn voor zakelijke professionals. Het begrijpen van de basislogica van Excel, zoals hoe de IF-functie (ALS-functie) werkt, geeft je een flinke voorsprong bij het leren van de syntaxis van VBA.
Standaard kunnen gewone Excel-werkmappen (.xlsx) geen macro's opslaan. Wanneer je VBA-code schrijft, moet je je bestand opslaan als een "Excel-werkmap met ingeschakelde macro's" (.xlsm). Als je probeert het op te slaan als een standaardwerkmap, zal Excel je waarschuwen dat je code wordt verwijderd.
Hoewel Microsoft zwaar investeert in het cloudgebaseerde Power Automate en onlangs Python in Excel heeft geĂŻntegreerd, zal VBA voorlopig niet verdwijnen. Miljoenen bedrijven vertrouwen op bestaande VBA-macro's. Het blijft de snelste, meest betrouwbare manier om lokale automatisering op desktopniveau binnen een Excel-bestand uit te voeren.
Om je macro gebruiksvriendelijk te maken, ga je naar het tabblad Ontwikkelaars, klik je op Invoegen en selecteer je het pictogram Knop onder Formulierbesturingselementen. Teken de knop op je spreadsheet. Er verschijnt direct een pop-up waarin wordt gevraagd om een macro toe te wijzen. Selecteer je nieuwe macro uit de lijst, klik op OK, en je kunt nu je code uitvoeren met een simpele muisklik.
Ontdek hoe u Excel-taken automatiseert zonder VBA met Power Automate. Leer hoe u flows maakt op basis van triggers, gegevens verwerkt en andere apps koppelt.
Ontdek hoe u geautomatiseerde rapportagesystemen bouwt in Excel met VBA. Leer stapsgewijs data ophalen, formules invoegen, cellen opmaken en rapporten exporteren met code.
Begin met programmeren in Excel met VBA. Leer meer over het tabblad Ontwikkelaars, variabelen, lussen, voorwaarden en hoe je je eerste werkende macro schrijft.