VBA voor beginners in Excel: eerste macro schrijven (2026)
Kort antwoord: VBA (Visual Basic for Applications) is de programmeertaal van Excel waarmee je taken automatiseert. Je schrijft je eerste macro door het Ontwikkelaarstabblad te activeren, de VBA-editor te openen met Alt+F11, en een simpele Sub-procedure te maken met een MsgBox “Hallo wereld!” opdracht.
In het kort
- VBA is de ingebouwde programmeertaal van Excel voor geavanceerde automatisering
- Je opent de VBA-editor met Alt+F11 (Windows) of Fn+Option+F11 (Mac)
- Elke macro begint met
Suben eindigt metEnd Sub - Sla bestanden met VBA-code op als .xlsm (macro-enabled werkmap)
- Start eenvoudig met een MsgBox en bouw vanaf daar verder
Wat is VBA?
VBA staat voor Visual Basic for Applications. Het is een programmeertaal die Microsoft inbouwt in Office-programma’s zoals Excel, Word en Access. Met VBA automatiseer je taken die te complex zijn voor de gewone macrorecorder.
Terwijl de macrorecorder alleen je muisklikken opneemt, kun je met VBA:
- Loops schrijven: herhaal een actie voor elke rij in je dataset
- Voorwaardelijke logica gebruiken: voer acties alleen uit als aan bepaalde criteria wordt voldaan
- Variabelen gebruiken: sla waarden tijdelijk op en hergebruik ze
- Gebruikersinvoer vragen: toon dialoogvensters en verwerk de antwoorden
- Foutafhandeling toevoegen: voorkom crashes met robuuste foutcontrole
Wanneer kies je voor VBA?
Je hebt VBA nodig wanneer:
- De macrorecorder niet genoeg flexibiliteit biedt
- Je honderden of duizenden rijen moet verwerken
- Je interactie nodig hebt met de gebruiker (keuzemenu’s, invoervelden)
- Je taken wilt koppelen aan specifieke gebeurtenissen (openen bestand, wijzigen cel)
- Je complexe berekeningen wilt automatiseren
Voor eenvoudige opmaaktaken en repetitieve handelingen volstaat vaak de macrorecorder. Maar zodra je logica, loops of gebruikersinteractie nodig hebt, is VBA de oplossing.
Stap 1: Ontwikkelaarstabblad activeren
Voordat je met VBA aan de slag kunt, moet je het tabblad Ontwikkelaars zichtbaar maken in het lint. Dit tabblad staat standaard uitgeschakeld.
Windows
- Klik op Bestand > Opties
- Ga in het linkervenster naar Lint aanpassen
- Vink in de rechterkolom bij Hoofdtabbladen Ontwikkelaars aan
- Klik op OK
Het tabblad Ontwikkelaars verschijnt nu in het lint, meestal tussen Beeld en Help.
Mac
- Ga naar Excel > Voorkeuren
- Klik op Lint en werkbalk
- Zoek in de lijst met hoofdtabbladen naar Ontwikkelaars en vink deze aan
- Sluit het venster
Tip: Je hoeft dit slechts een keer te doen. De instelling blijft bewaard, ook na het sluiten van Excel.
Stap 2: VBA-editor openen
De VBA-editor is je werkomgeving voor het schrijven en bewerken van code. Er zijn meerdere manieren om deze te openen.
Sneltoets (aanbevolen)
Windows: Druk op Alt + F11
Mac: Druk op Fn + Option + F11
Dit is de snelste methode en werkt ongeacht welk tabblad actief is.
Via het lint
- Ga naar het tabblad Ontwikkelaars
- Klik op Visual Basic (eerste knop links)
De VBA-editor verkennen
Wanneer de editor opent, zie je drie belangrijke onderdelen:
| Onderdeel | Functie |
|---|---|
| Project-verkenner (links) | Toont alle geopende werkmappen en hun onderdelen (werkbladen, modules) |
| Eigenschappenvenster (linksonder) | Toont eigenschappen van het geselecteerde object |
| Codevenster (rechts) | Hier schrijf je je VBA-code |
Als je de Project-verkenner niet ziet, druk dan op Ctrl + R of ga naar Beeld > Project-verkenner.
Stap 3: Module toevoegen
VBA-code schrijf je in een module. Een module is een container voor je code, vergelijkbaar met een tekstbestand.
Nieuwe module maken
- Klik in de Project-verkenner met rechts op je werkmap (bijv. “VBAProject (Map1)”)
- Kies Invoegen > Module
- Er verschijnt een nieuwe map genaamd “Modules” met daarin “Module1”
- Dubbelklik op Module1 om het codevenster te openen
Je ziet nu een leeg wit vlak. Hier schrijf je je eerste macro.
Stap 4: Je eerste macro schrijven
Elke VBA-macro heeft een vaste structuur. De eenvoudigste vorm ziet er zo uit:
Sub MijnEersteMacro()
' Dit is een commentaarregel
MsgBox "Hallo wereld!"
End Sub
De onderdelen uitgelegd
- Sub: Start van de procedure (macro)
- MijnEersteMacro(): De naam van je macro, gevolgd door haakjes
- ‘ Dit is…: Commentaar (wordt niet uitgevoerd, alleen voor documentatie)
- MsgBox: Toont een berichtvenster
- End Sub: Einde van de procedure
Code typen
Typ de volgende code in je module:
Sub HalloWereld()
MsgBox "Hallo wereld! Dit is mijn eerste VBA-macro."
End Sub
Let op:
– Gebruik geen spaties of speciale tekens in de macronaam
– De aanhalingstekens rond de tekst zijn verplicht
– VBA is niet hoofdlettergevoelig (MsgBox = msgbox = MSGBOX)
Stap 5: Macro uitvoeren
Nu je code hebt geschreven, kun je de macro uitvoeren om te testen of hij werkt.
Methode 1: Vanuit de VBA-editor
- Klik ergens in je Sub-procedure (tussen Sub en End Sub)
- Druk op
F5 - Of klik op de groene “Play” knop in de werkbalk
- Of ga naar Uitvoeren > Sub/UserForm uitvoeren
Methode 2: Via het lint in Excel
- Ga terug naar Excel (Alt + F11 of klik op het Excel-icoon)
- Ga naar Ontwikkelaars > Macro’s
- Selecteer “HalloWereld” in de lijst
- Klik op Uitvoeren
Methode 3: Sneltoets Alt+F8
- Druk in Excel op
Alt + F8 - Selecteer de macro
- Klik op Uitvoeren
Als alles goed gaat, zie je een dialoogvenster met de tekst “Hallo wereld! Dit is mijn eerste VBA-macro.”
Stap 6: Bestand opslaan als macro-enabled werkmap
Standaard Excel-bestanden (.xlsx) kunnen geen VBA-code bevatten. Je moet opslaan in een speciaal formaat.
Opslaan als .xlsm
- Ga naar Bestand > Opslaan als
- Kies een locatie
- Bij Opslaan als type, selecteer Excel-werkmap met macro’s (*.xlsm)
- Klik op Opslaan
Als je probeert op te slaan als .xlsx, waarschuwt Excel dat de VBA-code verloren gaat. Kies dan altijd voor .xlsm.
Andere macro-formaten
| Formaat | Extensie | Gebruik |
|---|---|---|
| Macro-enabled werkmap | .xlsm | Standaard voor bestanden met VBA |
| Macro-enabled sjabloon | .xltm | Voor herbruikbare sjablonen met VBA |
| Binaire werkmap | .xlsb | Kleinere bestandsgrootte, ook macro-enabled |
| Add-in | .xlam | Voor herbruikbare tools over alle werkmappen |
Macro aan een knop koppelen
Een visuele knop maakt je macro toegankelijk zonder de VBA-editor of macro-menu te openen.
Knop toevoegen (Windows)
- Ga naar Ontwikkelaars > Invoegen
- Klik onder Formulierbesturingselementen op het icoontje Knop
- Teken een rechthoek op je werkblad waar de knop moet komen
- Het venster Macro toewijzen opent automatisch
- Selecteer “HalloWereld” en klik op OK
- Rechtsklik op de knop en kies Tekst bewerken om een label te geven
Knop toevoegen (Mac)
- Ga naar Ontwikkelaars > Knop
- Teken de knop op het werkblad
- Wijs de macro toe in het dialoogvenster
- Klik OK
Nu kun je op de knop klikken om de macro uit te voeren.
Sneltoets toewijzen
Je kunt ook een toetscombinatie aan je macro koppelen.
Sneltoets instellen
- Druk op
Alt + F8om het macro-venster te openen - Selecteer je macro
- Klik op Opties
- Bij Sneltoets vul je een letter in (bijv. “h”)
- De combinatie wordt Ctrl + Shift + H (of alleen Ctrl + H, afhankelijk van je keuze)
- Klik OK
Tip: Gebruik altijd Ctrl + Shift + letter om conflicten met standaard Excel-sneltoetsen te voorkomen. Bekijk onze Excel sneltoetsen gids voor meer informatie.
VBA-concepten voor beginners
Nu je eerste macro werkt, is het tijd om de basisconcepten te leren.
Variabelen declareren
Variabelen slaan gegevens tijdelijk op:
Sub VariabelenVoorbeeld()
Dim naam As String
Dim leeftijd As Integer
naam = "Piet"
leeftijd = 35
MsgBox "Hallo " & naam & ", je bent " & leeftijd & " jaar."
End Sub
Veelgebruikte datatypes:
– String: tekst
– Integer: gehele getallen (-32.768 tot 32.767)
– Long: grote gehele getallen
– Double: decimale getallen
– Boolean: True of False
– Date: datums
Gebruikersinvoer vragen
Met InputBox vraag je de gebruiker om invoer:
Sub VraagNaam()
Dim gebruikersNaam As String
gebruikersNaam = InputBox("Wat is je naam?", "Invoer vereist")
If gebruikersNaam <> "" Then
MsgBox "Welkom, " & gebruikersNaam & "!"
Else
MsgBox "Je hebt geen naam ingevoerd."
End If
End Sub
Werken met cellen
VBA kan celwaarden lezen en schrijven:
Sub CellenBewerken()
' Waarde schrijven naar een cel
Range("A1").Value = "Hallo"
' Waarde lezen uit een cel
Dim inhoud As String
inhoud = Range("B1").Value
' Actieve cel
ActiveCell.Value = "Actief"
' Bereik selecteren
Range("A1:C10").Select
End Sub
Eenvoudige loop
Loops herhalen code voor meerdere rijen:
Sub VulRijen()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = "Rij " & i
Next i
End Sub
Dit vult cellen A1 tot A10 met “Rij 1” tot “Rij 10”.
Beveiligingswaarschuwingen uitgelegd
Excel blokkeert standaard macro’s vanwege beveiligingsrisico’s. Dit is wat je moet weten.
De gele waarschuwingsbalk
Wanneer je een .xlsm bestand opent, zie je bovenaan:
Beveiligingswaarschuwing: Macro’s zijn uitgeschakeld. [Inhoud inschakelen]
Klik op Inhoud inschakelen als je de bron van het bestand vertrouwt. Excel onthoudt dit voor toekomstige keren.
Beveiligingsniveaus aanpassen
Windows:
1. Ga naar Bestand > Opties > Vertrouwenscentrum
2. Klik op Instellingen voor het Vertrouwenscentrum
3. Ga naar Macro-instellingen
4. Kies je voorkeursniveau
Mac:
1. Ga naar Excel > Voorkeuren > Beveiliging en privacy
2. Pas de macro-instellingen aan
Aanbevolen instelling: “Alle macro’s uitschakelen met melding” – zo krijg je een waarschuwing maar kun je per bestand kiezen.
Vertrouwde locaties
Een betere aanpak is het instellen van vertrouwde mappen:
- Ga naar Vertrouwenscentrum > Vertrouwde locaties
- Voeg een map toe waar je je macro-bestanden bewaart
- Bestanden in deze map worden automatisch vertrouwd
Veelgemaakte fouten
1. Syntax error bij uitvoeren
Oorzaak: Typefouten in de code, ontbrekende aanhalingstekens of haakjes.
Oplossing: Controleer of elke Sub een bijbehorende End Sub heeft, of strings tussen aanhalingstekens staan, en of haakjes correct zijn gesloten. VBA markeert de foutieve regel rood.
2. Bestand opgeslagen als .xlsx, macro’s verdwenen
Oorzaak: Het .xlsx formaat ondersteunt geen VBA-code.
Oplossing: Sla altijd op als .xlsm wanneer je VBA gebruikt. Helaas is de code niet te herstellen als je al hebt opgeslagen en gesloten.
3. “Macro kan niet worden gevonden”
Oorzaak: De macro staat in een andere werkmap, of de module is niet correct opgeslagen.
Oplossing: Controleer in de VBA-editor of je module bestaat onder de juiste werkmap. Controleer ook of je de .xlsm hebt opgeslagen.
4. “Compileerfout: Verwachte End Sub”
Oorzaak: Je bent vergeten End Sub te typen, of er zit een extra Sub in je code.
Oplossing: Elke Sub NaamVanMacro() moet eindigen met End Sub. Controleer of deze regels in paren voorkomen.
5. Code werkt niet op Mac
Oorzaak: Sommige VBA-functies werken alleen op Windows.
Oplossing: Vermijd Windows-specifieke functies zoals Shell, SendKeys of verwijzingen naar Windows-paden. Test je code op beide platformen als je deelt met Mac-gebruikers.
FAQ
Is VBA moeilijk om te leren?
VBA is een van de meest toegankelijke programmeertalen. De syntaxis is leesbaar en lijkt op gewoon Engels. Als je al ervaring hebt met Excel formules, heb je een voorsprong. Begin met eenvoudige macro’s en bouw geleidelijk naar complexere oplossingen.
Wat is het verschil tussen een macro en VBA?
Een macro is een reeks geautomatiseerde acties. VBA is de programmeertaal waarmee macro’s worden geschreven. Je kunt macro’s maken met de macrorecorder (zonder te coderen) of door zelf VBA te schrijven. De recorder genereert VBA-code op de achtergrond.
Werkt VBA in Excel Online?
Nee, Excel Online ondersteunt geen VBA of macro’s. Je moet de desktop-versie van Excel gebruiken om VBA-code te schrijven en uit te voeren. Je kunt wel .xlsm bestanden openen in Excel Online, maar de macro’s worden niet uitgevoerd.
Kan ik VBA leren zonder programmeerervaring?
Ja, veel Excel-gebruikers leren VBA zonder eerdere programmeerervaring. Begin met het opnemen van macro’s en bestudeer de gegenereerde code. Pas kleine dingen aan en test. Zo bouw je stap voor stap begrip op.
Hoe debug ik VBA-code?
Gebruik de debug-tools in de VBA-editor. Zet een breakpoint door op de grijze marge naast een regel te klikken. De code pauzeert daar. Druk op F8 om regel voor regel te doorlopen. Bekijk variabelenwaarden door er met je muis overheen te gaan.
Is VBA nog relevant in 2026?
Ja, VBA blijft relevant voor Excel-automatisering. Hoewel er alternatieven zijn zoals Python en Power Automate, is VBA nog steeds de meest directe manier om Excel te automatiseren. Miljoenen bedrijven gebruiken VBA-oplossingen.
Kan ik VBA-code delen met collega’s?
Ja, je deelt simpelweg het .xlsm bestand. Collega’s moeten wel macro’s inschakelen bij het openen. Je kunt ook alleen de code exporteren vanuit de VBA-editor (rechtsklik op module > Bestand exporteren) en dit .bas bestand delen.
Hoe beveilig ik mijn VBA-code?
Je kunt een wachtwoord instellen. Ga in de VBA-editor naar Extra > VBAProject-eigenschappen > tabblad Beveiliging > vink “Project vergrendelen voor weergave” aan en stel een wachtwoord in. Let op: deze beveiliging is niet waterdicht.
Volgende stappen
Nu je de basis kent, kun je verder leren:
- Meer loops: For Each, Do While, Do Until
- Foutafhandeling: On Error Resume Next, On Error GoTo
- UserForms: maak aangepaste dialoogvensters
- Gebeurtenissen: code die automatisch uitvoert bij openen, wijzigen of sluiten
- Werken met andere Office-apps: Word en Outlook aansturen vanuit Excel
Bekijk ook onze handleiding over macro’s opnemen om te zien hoe je de recorder kunt combineren met handgeschreven VBA.
Gerelateerde onderwerpen
VBA werkt goed samen met andere Excel-functionaliteiten:
- Macro opnemen in Excel: automatiseren zonder te coderen
- Excel formules: combineer VBA met krachtige functies
- Excel sneltoetsen: werk sneller met toetscombinaties
- Formules beschermen: beveilig je werkbladen met VBA
Wil je dit uitbesteden? Hulp nodig met VBA?. Neem vrijblijvend contact op.
Hulp nodig?
Kom je er niet uit met VBA? Of wil je een specifieke automatisering laten bouwen?
- WhatsApp: Stuur een bericht
- E-mail: w.bouwmeester@bouwmeesterconsultancy.nl
- Telefoon: +31 6 28963636
Stuur gerust je Excel-bestand mee met een korte beschrijving van wat je wilt automatiseren. We reageren meestal binnen 24 uur.
Bekijk ook: Hulp nodig met Excel? | VBA hulp nodig? | Wat kost dit? | Spreadsheet laten maken?





