Leerpad
Visual Basic for Applications (VBA) in Excel is een taal waarmee je repetitieve taken kunt automatiseren en de functionaliteit van Excel ver voorbij de standaardfuncties kunt uitbreiden. Dus of je nu een beginner bent die productiever wil worden of een gevorderde gebruiker die complexe workflows wil stroomlijnen, VBA is er om het je makkelijker te maken.
In deze gids leg ik basis- en gevorderde VBA-concepten uit. Maar als je nieuw bent met Excel, begin dan met Excel Fundamentals om een solide basis op te bouwen voordat je met VBA aan de slag gaat.
Wat is VBA in Excel?
Visual Basic for Applications (VBA) is een programmeertaal die wordt gebruikt om taken te automatiseren en de functionaliteit van Microsoft Office-toepassingen uit te breiden. Je kunt het gebruiken met Excel, Word, Access en andere Office-programma’s, hoewel het waarschijnlijk het meest wordt gebruikt voor het maken van aangepaste macro’s in Excel, waar we naar gaan kijken.
Zelf gebruikte ik VBA voor het eerst om een wekelijks rapport te automatiseren dat handmatig uren kostte om samen te stellen. Met een paar regels code bracht ik het terug tot één druk op de knop en bespaarde ik veel tijd. Vanaf dat moment wist ik dat wat tijd investeren in het onder de knie krijgen ervan enorm zou lonen in productiviteit.
Belangrijke VBA-termen in Excel
Voordat je met VBA werkt, is het belangrijk om de belangrijkste termen en concepten te begrijpen. Hier is een lijst met veelgebruikte termen die je tegenkomt wanneer je begint met het automatiseren van taken en het bouwen van aangepaste oplossingen in Excel.
-
Modules zijn de containers voor VBA-code, waar procedures en functies worden opgeslagen.
-
Objecten zijn de bouwstenen van VBA. Ze vertegenwoordigen elementen zoals werkmappen, werkbladen en cellen.
-
Procedures zijn codeblokken die specifieke taken uitvoeren, vaak onderverdeeld in subprocedures of functies.
-
Statements zijn de instructies binnen een procedure die Excel (of Word of Access) vertellen welke acties moeten worden uitgevoerd.
-
Variabelen slaan gegevens op die binnen je code kunnen worden gebruikt en aangepast.
-
Logische operatoren vergelijken waarden en nemen beslissingen op basis van de resultaten. Ze omvatten operatoren zoals
And,OrenNot.
Aan de slag met VBA in Excel
Om VBA te gebruiken, moet je de VBA-editor openen. Hier schrijf en bewerk je je VBA-code. Laten we bekijken hoe je daar komt:
Het tabblad Ontwikkelaars inschakelen
De eerste stap is het inschakelen van het tabblad Ontwikkelaars, dat vaak verborgen is op het Lint. Zo doe je dat:
- Klik met de rechtermuisknop ergens op het Lint.

Lint in Excel. Afbeelding door de auteur.
- Selecteer de optie Lint aanpassen....

Pas het lint aan om het tabblad Ontwikkelaars in te schakelen. Afbeelding door de auteur.
- Er verschijnt een dialoogvenster. Vink de optie Ontwikkelaars aan en klik op OK.

De optie Ontwikkelaars selecteren. Afbeelding door de auteur.
Je ziet nu bovenaan het Lint een tabblad Ontwikkelaars.

Het tabblad Ontwikkelaars is ingeschakeld op het lint. Afbeelding door de auteur.
De VBA-editor openen
Zodra het tabblad Ontwikkelaars is ingeschakeld, kun je de VBA-editor openen. Klik daarvoor op het tabblad Ontwikkelaars en selecteer Visual Basic uit de opties. Je kunt ook de sneltoets ALT + F11 gebruiken om de VBA-editor direct te openen.

VBA-editor. Afbeelding door de auteur.
Navigeren in de VBA-interface
De VBA-editor lijkt in het begin misschien intimiderend, maar hij is eenvoudig te gebruiken. Laten we een paar belangrijke onderdelen bekijken:
- Codevenster is waar je je VBA-code schrijft en bewerkt.
- Projectverkenner toont een hiërarchisch overzicht van de projecten en modules in je werkmap.
- Eigenschappenvak toont eigenschappen voor geselecteerde objecten om hun instellingen aan te passen.

VBA-interface in Excel. Afbeelding door de auteur.
VBA-code schrijven in Excel
Nu je de VBA-editor kent, is het tijd om wat code te schrijven. VBA-code bestaat uit verschillende onderdelen, zoals subprocedures en functies. Dit zijn reeksen instructies die Excel vertellen wat het moet doen. Geen zorgen als je nog nooit hebt geprogrammeerd – ik neem het stap voor stap met je door.
Een VBA-subroutine schrijven
Voordat je een macro schrijft, moet je een macro-omgeving creëren. Volg hiervoor deze stappen:
- Selecteer in de VBA-editor Insert > Module. Er wordt een nieuwe module gemaakt met de standaardnaam Module1.

Selecteer Module onder het tabblad Insert. Afbeelding door de auteur.
- Je kunt de naam van de module wijzigen in het venster Eigenschappen.

De VBA-module hernoemen. Afbeelding door de auteur.
Nu je weet hoe je de omgeving voor het maken van een macro instelt, maken we samen onze eerste macro om een bericht weer te geven. Standaard wordt het codevenster geopend wanneer de module is gemaakt. Als dat bij jou niet zo is, klik dan met de rechtermuisknop op de gemaakte module en klik op View Code. Het codevenster verschijnt waarin je je macro’s kunt schrijven.
Hier maak ik een macro om het bericht Hello, World! weer te geven. Daarvoor schrijf ik de volgende code in het codevenster:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Hier:
-
Sub is het sleutelwoord voor een subroutine, een codeblok dat een specifieke taak uitvoert. In VBA geeft een subroutine geen waarde terug.
-
ShowMessage is de naam van de subroutine. Je kunt het noemen zoals je wilt, zolang het voldoet aan de VBA-benoemingsregels (bijv. geen spaties, mag niet met een cijfer beginnen).
-
() worden hier gebruikt om de parameters van de subroutine te definiëren. Omdat er voor deze taak geen parameters nodig zijn, blijven de haakjes leeg.
-
MsgBox is een ingebouwde VBA-functie die een berichtvenster op het scherm weergeeft.
-
End Sub geeft het einde van de subroutine aan. Alles tussen
SubenEnd Subis de code die wordt uitgevoerd wanneer de subroutine wordt aangeroepen. -
Tekststrings in VBA staan tussen dubbele aanhalingstekens. Hier willen we dat de string
Hello, World!in het berichtvenster verschijnt.

Een macro schrijven. Afbeelding door de auteur.
- Nu is het tijd om de code uit te voeren. Gebruik de sneltoets F5. Als je het handmatig wilt doen, ga dan naar het tabblad Ontwikkelaars en selecteer Macro’s. Klik op Uitvoeren.

Selecteer de optie Macro’s onder het tabblad Ontwikkelaars. Afbeelding door de auteur.
Je ziet nu het berichtvenster op je Excel-blad verschijnen.

Berichtvenster. Afbeelding door de auteur.
Objecten in VBA begrijpen
In VBA kun je met objecten verschillende elementen in Excel aansturen en taken automatiseren voor een efficiëntere workflow. Er zijn drie kernobjecten: Workbook, Worksheet en Range. We bekijken elk met een praktisch voorbeeld.
Het Workbook-object is elk Excel-bestand dat momenteel open is. Hiermee kun je acties uitvoeren zoals nieuwe bladen toevoegen of bestaande bladen in de werkmap opslaan. In dit voorbeeld wil ik een blad toevoegen aan het momenteel geopende bestand en het daarna opslaan. Eerst had ik Sheet1. Om een ander blad toe te voegen, schrijf ik de volgende code:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Deze code werkt precies hetzelfde als de vorige code, maar ik heb hier opmerkingen toegevoegd. Opmerkingen beginnen met ' en hebben geen invloed op je code. We voegen ze alleen toe voor onze eigen duidelijkheid.
Je ziet dat er nu een ander blad is gemaakt, Sheet2.

Een nieuw blad toevoegen en opslaan in het bestaande bestand met VBA. Afbeelding door de auteur.
Het object Worksheet vertegenwoordigt het momenteel actieve blad in Excel. Hiermee kun je het actieve blad aanpassen of bewerken. Ik wil bijvoorbeeld de naam van het actieve blad wijzigen. Daarvoor voer ik de volgende code in:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub

De naam van het werkblad wijzigen met VBA. Afbeelding door de auteur.
Nu is Sheet1 hernoemd naar Sales Report.

Het Excel-werkblad hernoemen met VBA. Afbeelding door de auteur.
Het object Range verwijst naar een specifieke groep cellen of een enkele cel die we naar wens kunnen bewerken. In het volgende voorbeeld selecteer ik een celbereik van F3 tot I3 en wijzig ik de achtergrondkleur. Daarvoor schrijf ik de volgende code:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub

Bereik selecteren en de kleur wijzigen met VBA. Afbeelding door de auteur.
Je ziet het verschil in resultaten.

De kleur wijzigen met VBA in Excel. Afbeelding door de auteur.
Variabelen maken in VBA
Net als in andere programmeertalen slaan VBA-variabelen grofweg twee hoofdtypen gegevens op: getallen en tekst. Om ze in VBA te gebruiken, moet je de variabele eerst declareren met het sleutelwoord naar keuze, gevolgd door de variabelenaam en het gegevenstype.
Keyword variableName As DataType
Hier:
-
KeywordkanDim,Static,PublicenPrivatezijn. -
variableNameverwijst naar de gekozen naam voor deze variabele (geen spaties). -
Aswordt gebruikt om het variabeletype te declareren. -
DataTypeverwijst naar het variabeletype, zoalsInteger.
Bij het werken met variabelen moet je je ook aan enkele regels houden:
- De lengte moet minder dan 255 tekens zijn.
- Er zijn geen spaties toegestaan tussen tekens.
- De naam mag niet beginnen met een cijfer.
- Gebruik geen punten in de naam.
Numeriek gegevenstype
Numerieke gegevenstypen in VBA worden gebruikt om numerieke waarden op te slaan.
| Gegevenstype | Opgeslagen | Bereik van waarden |
|---|---|---|
| Byte | 1 Byte | Slaat gehele getallen van 0 tot 255 op |
| Integer | 2 Byte | Slaat gehele getallen op binnen het bereik van -32.768 tot 32.767 |
| Long | 4 Bytes | Slaat grotere gehele getallen op, variërend van -2.147.483.648 tot 2.147.483.647 |
| Single | 4 Bytes | Slaat decimale getallen met single-precision op |
| Double | 8 Bytes | Slaat decimale getallen met double-precision op |
| Currency | 8 Bytes | Slaat getallen met vaste decimalen op |
| Variant (tekst) | Tekstlengte + 22 bytes | 0 tot 2 miljard tekens |
Niet-numeriek gegevenstype
Niet-numerieke gegevenstypen in VBA slaan waarden op die geen getallen zijn.
| Gegevenstype | Opgeslagen | Bereik van waarden |
|---|---|---|
| String | Stringlengte | Slaat tekst op |
| Date | 8 Bytes | Slaat datum en tijd op |
| Boolean | 2 Bytes | Slaat True of False op |
| Variant | 16 Bytes | Slaat elk gegevenstype op en wordt gebruikt wanneer het type niet vooraf bekend is |
Taken automatiseren met VBA Excel-macro’s
Macro’s zijn in wezen een reeks instructies die in VBA zijn gemaakt om repetitieve taken uit te voeren. Met een macro kun je een reeks acties opnemen, zoals cellen opmaken, gegevens kopiëren of berekeningen uitvoeren. Nadat je de macro hebt opgeslagen, kun je deze acties met één klik opnieuw toepassen. Dit bespaart tijd, vooral bij grote datasets of taken.
Als je je rapporten bijvoorbeeld vaak op dezelfde manier opmaakt, kun je een macro opnemen die alle benodigde opmaakstappen toepast in plaats van het elke keer handmatig te doen. Later kun je deze macro uitvoeren om nieuwe gegevens op te maken. We hebben een paar basisvoorbeelden laten zien, maar stel je voor dat je met één klik nog veel meer kleine acties kunt uitvoeren. Zelfs zonder codeerervaring kun je routinetaken automatiseren om je workflow te stroomlijnen en de kans op fouten te verkleinen die kunnen optreden bij handmatige repetitieve handelingen.
Een Excel-macro opnemen
Laten we bekijken hoe je een macro opneemt om wat opmaakwijzigingen te doen:
- Ga naar het tabblad Ontwikkelaars > knop Macro opnemen.
- Er verschijnt een dialoogvenster. Geef je macro een naam, zoals ik deed met FormatCells.
- Wijs desgewenst een sneltoets toe. Ik heb Ctrl+S toegewezen.
- Klik op OK om te beginnen met opnemen.
Nu de macro begint met opnemen, voer je de acties uit die je wilt automatiseren. In dit voorbeeld neem ik enkele opmaakwijzigingen op in een eenvoudige tabel. Als je klaar bent, ga je terug naar het tabblad Ontwikkelaars en klik je op de knop Opname stoppen. Hieronder zie je de macro in actie.
Een macro opnemen met VBA in Excel. Gif door de auteur.
Als je nu een andere dataset in een ander blad hebt en je wilt daar dezelfde opmaak toepassen, druk dan in plaats van alles opnieuw op te maken op de sneltoets die je hebt gemaakt (in mijn geval Ctrl+S). Of ga naar sheet2 > tabblad Ontwikkelaars > Macro’s > Uitvoeren om het handmatig te doen.

De Excel-macro gebruiken. Gif door de auteur.
Excel-macro’s bewerken
Na het opnemen van een macro kun je de acties zelfs nog aanpassen of verfijnen. Zo doe je dat:
- Ga naar het tabblad Ontwikkelaars en klik op Visual Basics.
- De VBA-editor verschijnt. Zoek nu in de Projectverkenner de werkmap waarin je macro is opgeslagen.
- Vouw de map Modules uit en dubbelklik vervolgens op de module die je macro bevat. Het codevenster toont de VBA-code van je opgenomen macro.

Code van opgenomen macro in Excel. Afbeelding door de auteur.
Elke coderegel toont de actie die je tijdens het opnemen hebt uitgevoerd. Vanaf hier kun je de opgenomen code aanpassen om de macro naar wens te personaliseren. In mijn geval heb ik Selection.Font.Bold op False gezet om de vette opmaak te verwijderen. Als de bewerkingen klaar zijn, sla je de wijzigingen op door op de opslaan-knop te klikken of druk op Ctrl+S en voer de code uit om de wijzigingen toe te passen. 
De Excel VBA-macro aanpassen. Afbeelding door de auteur.
Na het uitvoeren van je macro zie je het resultaat — de eerder vetgedrukte kolommen zijn niet langer vet.

Een macro gebruiken in Excel. Afbeelding door de auteur
Aangepaste Excel-macro’s schrijven
Soms zijn er geavanceerde taken waarvoor je geen macro kunt opnemen. In zulke gevallen moet je een macro vanaf nul schrijven. Ik wil bijvoorbeeld gegevens van het ene werkblad naar het andere kopiëren. Zo schrijf ik een aangepaste macro:
- Open de VBA-editor handmatig in het eerste blad of druk op Alt+F11.
- Voeg een nieuwe module in.
- Schrijf de volgende code in het codevenster.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Sla de macro op en klik op Uitvoeren.
Nu zie je dat de gegevens van Sheet1 zijn gekopieerd naar Sheet2.

Een aangepaste macro schrijven met VBA. Gif door de auteur.
Tot slot
Van het automatiseren van repetitieve taken tot het maken van complexe macro’s: VBA opent een wereld aan mogelijkheden binnen Excel. Naarmate je je comfortabeler voelt met de basis, oefen je met het schrijven van code en verken je geleidelijk de geavanceerdere functies van VBA. Onthoud: de sleutel tot het beheersen van VBA—of welke programmeertaal dan ook—is consistent oefenen en durven experimenteren. Wil je je skills verder uitbreiden, bekijk dan deze extra bronnen. De cursussen Data Analysis in Excel en Learn Excel zijn uitstekend om meer te leren over de functies van Excel.
Als je je programmeerkennis verder wilt uitbreiden dan VBA, biedt de gids How to Become a Programmer in 2024 een stappenplan. Bekijk ’m zeker als je interesse hebt in dit vakgebied. Daarnaast is de cursus Financial Modeling in Excel perfect voor wie gedetailleerde financiële modellen wil maken.
Ik ben een contentstrateeg die graag complexe onderwerpen eenvoudig maakt. Ik heb bedrijven als Splunk, Hackernoon en Tiiny Host geholpen om boeiende en informatieve content te maken voor hun doelgroep.
Veelgestelde vragen over VBA in Excel
Wat is het doel van de instructie Explicit in VBA?
Explicit zorgt ervoor dat alle variabelen expliciet worden gedeclareerd voordat ze worden gebruikt, waardoor bugs worden verminderd en je code beter te onderhouden is.
Hoe beveilig ik mijn VBA-code met een wachtwoord?
Je kunt je VBA-code beveiligen door naar de VBA-editor > Tools > VBAProject Properties > tabblad Protection te gaan. Vink de optie Lock project for viewing aan en stel een wachtwoord in.
Wat is het verschil tussen ActiveWorkbook en ThisWorkbook in VBA?
ActiveWorkbook verwijst naar de werkmap die momenteel in focus is, die mogelijk niet de VBA-code bevat. Thisworkbook verwijst naar de werkmap waarin de VBA-code zich bevindt, ongeacht welke werkmap actief is.
Wat zijn UserForms in VBA en hoe kunnen ze worden gebruikt?
UserForms zijn aangepaste dialoogvensters in VBA waarmee gebruikers gegevens kunnen invoeren. Ze kunnen worden gebruikt om interactieve formulieren te maken voor gegevensinvoer, selectie of gebruikersinteractie die een aangepaste interface vereist.

