Applies ToAccess voor Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Wanneer u een nieuwe database maakt, gaat u meestal eerst verschillende databaseobjecten maken, zoals tabellen, formulieren en rapporten. Na verloop van tijd komt u op een punt waar u programmeerfuncties zult moeten toevoegen om bepaalde processen te automatiseren en uw database-objecten te koppelen. In dit artikel vindt u informatie over de programmeerhulpprogramma's in Access.

In dit artikel

Wat is programmeren?

In Access is programmeren het proces van het toevoegen van functionaliteit aan uw database met behulp van Access macro's of VBA-code (Visual Basic for Applications). Stel dat u een formulier en een rapport hebt gemaakt en dat u een opdrachtknop wilt toevoegen aan het formulier waarmee het rapport wordt geopend wanneer u erop klikt. Programmeren is in dit geval het proces van het maken van een macro- of VBA-procedure en vervolgens het instellen van de gebeurteniseigenschap OnClick van de opdrachtknop, zodat de macro of procedure wordt uitgevoerd door op de opdrachtknop te klikken. Voor een eenvoudige bewerking, zoals het openen van een rapport, kunt u de wizard Opdrachtknop gebruiken om al het werk uit te voeren, of u kunt de wizard uitschakelen en het programmeren zelf uitvoeren.

Opmerking: In veel Microsoft Office-programma's wordt de term 'macro' gebruikt om te verwijzen naar VBA-code. Dit kan verwarrend zijn voor Access gebruikers, omdat in Access de term 'macro' verwijst naar een benoemde verzameling macroacties die u kunt samenstellen met behulp van de opbouwfunctie voor macro's. Access macroacties vertegenwoordigen slechts een subset van de opdrachten die beschikbaar zijn in VBA. Met de opbouwfunctie voor macro's beschikt u over een meer gestructureerde gebruikersinterface dan in Visual Basic Editor, zodat u programmering kunt toevoegen aan besturingselementen en objecten zonder dat u VBA-code hoeft te kennen. Houd er rekening mee dat in Access Help-artikelen Access macro's worden aangeduid als macro's. VBA-code, daarentegen, wordt aangeduid als VBA, code, een functie of een procedure. VBA-code is opgenomen in klassemodules (die deel uitmaken van afzonderlijke formulieren of rapporten en die meestal alleen code voor deze objecten bevatten) en in modules (die niet zijn gekoppeld aan specifieke objecten en die meestal 'algemene' code bevatten die overal in de database kan worden gebruikt).

Objecten (zoals formulieren en rapporten) en besturingselementen (zoals opdrachtknoppen en tekstvakken) hebben verschillende gebeurteniseigenschappen waaraan u macro's of procedures kunt koppelen. Elke gebeurteniseigenschap is gekoppeld aan een bepaalde gebeurtenis, zoals klikken met de muis, een formulier openen of gegevens in een tekstvak wijzigen. Gebeurtenissen kunnen ook worden geactiveerd door factoren buiten Access, zoals systeemgebeurtenissen, of door macro's of procedures die zijn gekoppeld aan andere gebeurtenissen. De database kan erg complex worden als u veel macro's of procedures koppelt aan verschillende gebeurteniseigenschappen van een groot aantal objecten, maar in de meeste gevallen is er gelukkig niet veel programmering nodig om het gewenste resultaat te krijgen.

Naar boven

Kan ik beter macro's of VBA-code gebruiken?

De keuze voor macro's, VBA of een combinatie van beiden, wordt voornamelijk bepaald door de gewenste implementatie of distributie van de database. Als de database bijvoorbeeld is opgeslagen op uw computer en u de enige gebruiker bent, en als u ervaring hebt met VBA-code, kan het een goed idee zijn om de meeste taken te programmeren met VBA. Als u de database echter wilt gaan delen met andere personen door de database op te slaan op een bestandsserver, is het qua beveiliging beter om niet VBA te gebruiken.

Bij uw beslissing om macro's of VBA-code te gebruiken, moet u rekening houden met twee factoren: beveiliging en de gewenste functionaliteit. Beveiliging is een factor omdat met VBA code kan worden geschreven die de beveiliging van uw gegevens in gevaar kan brengen of die bestanden op uw computer kan beschadigen. Wanneer u een database gebruikt die door iemand anders is gemaakt, moet u VBA-code alleen inschakelen als u weet dat de database afkomstig is van een betrouwbare bron. Wanneer u een database maakt die door anderen zal worden gebruikt, moet u geen programmeerfuncties gebruiken waarvoor de gebruiker de database expliciet moet vertrouwen. Verderop wordt uitgelegd welke algemene technieken u kunt gebruiken om te voorkomen dat gebruikers uw database moeten vertrouwen.

Voor de beveiliging van de database moet u zo veel mogelijk macro's gebruiken en alleen VBA-code gebruiken voor bewerkingen die niet kunnen worden uitgevoerd met macroacties. Daarnaast kunt u het beste alleen macroacties gebruiken waarvoor geen vertrouwde status aan de database hoeft te worden verleend om deze te kunnen uitvoeren. Wanneer u het gebruik van macroacties op deze manier beperkt, kunnen de gebruikers erop vertrouwen dat de database geen programmeerfuncties bevat die de gegevens of andere bestanden op de computer kunnen beschadigen.

Aandachtspunten voor macro's

Access bevat veel nieuwe macroacties waarmee u krachtigere macro's kunt maken dan u kunt maken met eerdere versies van Access. Zo kunt u nu algemene tijdelijke variabelen maken en gebruiken via macroacties, en kunnen fouten beter worden afgehandeld met behulp van nieuwe macroacties voor foutafhandeling. In eerdere versies van Access zijn dit soort functies alleen beschikbaar met behulp van VBA. Bovendien is het nu mogelijk om een macro rechtstreeks in te sluiten in de gebeurteniseigenschap van een object of besturingselement. Een ingesloten macro wordt een onderdeel van het object of besturingselement en blijft gekoppeld aan het object of besturingselement wanneer dit wordt verplaatst of gekopieerd.

Macro's zijn een eenvoudige manier om allerlei verschillende programmeertaken af te handelen, zoals het openen en sluiten van formulieren en rapporten. U kunt de databaseobjecten die u hebt gemaakt, zoals formulieren en rapporten, snel en eenvoudig koppelen omdat u niet veel syntaxis hoeft te onthouden. De argumenten voor elke actie worden namelijk weergegeven in de opbouwfunctie voor macro's.

Naast de verbeterde beveiliging en het gebruiksgemak van macro's, zijn macro's onmisbaar om de volgende taken uit te voeren:

  • Een actie of een set met acties toewijzen aan een toets. Hiervoor moet u een macrogroep met de naam AutoKeys maken.

  • Een actie of een reeks acties uitvoeren wanneer een database voor het eerst wordt geopend. Hiervoor moet u een macro met de naam AutoExec maken.

    Opmerking:  De macro AutoExec wordt uitgevoerd vóór andere macro's of VBA-code, zelfs als u een opstartformulier hebt opgegeven in het dialoogvenster Opties voor Access en een macro of VBA-code hebt gekoppeld aan de gebeurtenis OnOpen of OnLoad van het formulier.

Zie Algemene informatie over macro's voor meer informatie over het maken van macro's.

Aandachtspunten voor VBA

Gebruik VBA-code in plaats van macro's als u een van de volgende handelingen wilt uitvoeren:

  • Gebruik ingebouwde functies of maak uw eigen functies    Access bevat veel ingebouwde functies, zoals de functie IPmt , waarmee een rentebetaling wordt berekend. U kunt deze ingebouwde functies gebruiken voor het uitvoeren van berekeningen zonder dat u ingewikkelde expressies hoeft te maken. Met behulp van VBA-code kunt u ook uw eigen functies maken, hetzij om berekeningen uit te voeren die meer mogelijkheden bieden dan een expressie of om complexe expressies te vervangen. Daarnaast kunt u de functies die u in expressies maakt, gebruiken om een algemene bewerking op meer dan één object toe te passen.

  • Objecten maken of bewerken    In de meeste gevallen zult u merken dat u een object het makkelijkst kunt maken en wijzigen door naar de ontwerpweergave van dat object te gaan. In sommige gevallen zult u echter de definitie van een object via code willen bewerken. Met VBA kunt u bewerkingen uitvoeren op alle objecten in een database, maar ook op de database als geheel.

  • Acties op systeemniveau uitvoeren    U kunt de actie App-uitvoeren in een macro om een ander programma (zoals Microsoft Excel) uit te voeren vanuit Access, maar u kunt een macro niet gebruiken om veel meer te doen buiten Access. Met VBA kunt u controleren of een bestand aanwezig is op de computer, automatisering of DDE (Dynamic Data Exchange) gebruiken om te communiceren met andere Microsoft Windows-programma's, zoals Excel, en functies aanroepen in DLL's (Dynamic Link Libraries) van Windows.

  • Records afzonderlijk bewerken    U kunt met VBA stapsgewijs door een set met records lopen en een bewerking uitvoeren op elke record. Macro's, daarentegen, kunt u gebruiken om een hele set met records in één keer te bewerken.

Naar boven

Veelvoorkomende programmeertaken uitvoeren met de wizard Opdrachtknop

Als u een opdrachtknop toevoegt aan een formulier, kan de wizard Opdrachtknop u helpen om eenvoudige taken te programmeren. De wizard helpt u bij het maken van een opdrachtknop voor het uitvoeren van een specifieke taak. In een Access-bestand (.accdb) maakt de wizard een macro die is ingesloten in de eigenschap OnClick van de opdrachtknop. In een MDB- of ADP-bestand wordt er met de wizard VBA-code gemaakt omdat in deze bestandsindelingen ingesloten macro's niet worden ondersteund. In beide gevallen kunt u de macro of VBA-code vervolgens aanpassen of verbeteren als dat nodig is.

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier waaraan u de opdrachtknop wilt toevoegen en klik op Ontwerpweergave.

  2. Klik op het tabblad Formulierontwerp op de pijl-omlaag om de galerie Besturingselementen weer te geven en zorg ervoor dat Wizards voor besturingselementen gebruiken is geselecteerd.

  3. Klik op het tabblad Formulierontwerp in de galerie Besturingselementen op Knop.

  4. Klik in het formulierontwerpraster op de plaats waar u de opdrachtknop wilt weergeven.

    De wizard Opdrachtknop wordt gestart.

  5. Klik op de eerste pagina van de wizard op de verschillende categorieën in de lijst Categorieën om te zien welke bewerkingen u met de wizard aan de opdrachtknop kunt koppelen. Selecteer in de lijst Acties de gewenste actie en klik vervolgens op Volgende.

  6. Selecteer het keuzerondje Tekst of Afbeelding om te bepalen of u tekst of een afbeelding wilt weergeven op de opdrachtknop.

    • Als u tekst wilt weergeven, kunt u de tekst in het vak naast Tekst desgewenst aanpassen.

    • Als u een afbeelding wilt weergeven, stelt de wizard een afbeelding in de lijst voor. Als u een andere afbeelding wilt selecteren, schakelt u het selectievakje Alle afbeeldingen weergeven in om een lijst weer te geven met alle opdrachtknopafbeeldingen die Access levert, of klikt u op Bladeren om een afbeelding te selecteren die elders is opgeslagen.

      Klik op Volgende.

  7. Voer een duidelijke naam in voor de opdrachtknop. Dit is een optionele stap en deze naam wordt niet weergegeven op de opdrachtknop. Het is echter een goed idee om een zinvolle naam in te voeren, zodat u later meteen weet waar een knop voor is bedoeld en u veel gemakkelijker onderscheid kunt maken tussen de opdrachtknoppen(bijvoorbeeld als u de tabvolgorde voor besturingselementen op het formulier gaat instellen). Als de opdrachtknop bijvoorbeeld is bedoeld om het formulier te sluiten, kunt u de naam cmdSluiten of OpdrachtSluiten gebruiken.

  8. Klik op Voltooien.

    Access plaatst de opdrachtknop op het formulier.

  9. Als u wilt zien wat de wizard voor u heeft 'geprogrammeerd', volgt u deze optionele stappen:

    1. Druk op F4 om het eigenschappenvenster weer te geven, als dat nog niet wordt weergegeven.

    2. Klik in het eigenschappenvenster op het tabblad Gebeurtenis.

    3. Klik in het vak Bij klikken op de knop Bouwen Knopvlak.

      Access start de opbouwfunctie voor macro's en geeft de macro weer die door de wizard is gemaakt. U kunt de macro desgewenst bewerken (zie hiervoor Algemene informatie over macro's). Wanneer u klaar bent, klikt u op het tabblad Macroontwerp in de groep Sluiten op Sluiten om de opbouwfunctie voor macro's te sluiten. Als Access u vraagt om de wijzigingen op te slaan en de eigenschap bij te werken, klikt u op Ja om de wijzigingen op te slaan of op Nee om de wijzigingen te weigeren.

  10. Klik op het tabblad Formulierontwerp in de groep Weergaven op Weergave en klik vervolgens op Formulierweergave. Klik op de nieuwe opdrachtknop om te kijken of deze werkt zoals verwacht.

Naar boven

Algemene informatie over macro's

Een macro is een hulpmiddel waarmee u taken kunt automatiseren en functionaliteit kunt toevoegen aan formulieren, rapporten en besturingselementen. Als u bijvoorbeeld een opdrachtknop toevoegt aan een formulier, koppelt u de gebeurteniseigenschap OnClick van de knop aan een macro die de opdrachten bevat die moeten worden uitgevoerd als er iemand op de knop klikt.

Het is handig om Access macro's te zien als een vereenvoudigde programmeertaal waarin u code maakt door een lijst met uit te voeren acties samen te stellen. Wanneer u een macro maakt, selecteert u elke actie uit een vervolgkeuzelijst en vult u vervolgens de vereiste gegevens in voor elke actie. Gebruik macro's om functionaliteit toe te voegen aan formulieren, rapporten en besturingselementen zonder dat u code hoeft te schrijven in een VBA-module. Macro's bieden een subset van de opdrachten die beschikbaar zijn in VBA, en de meeste mensen vinden het makkelijker om een macro te maken dan VBA-code te schrijven.

U maakt een macro met behulp van de opbouwfunctie voor macro's, die hieronder wordt weergegeven.

De opbouwfunctie voor macro's van Access 2010

De opbouwfunctie voor macro's weergeven:

  • Klik op het tabblad Maken in de groep Macro's en code op Macro.

Naar boven

Algemene informatie over VBA-code

Net als bij macro's kunt u met VBA automatisering en andere functionaliteit toevoegen aan uw Access-toepassing. U kunt VBA uitbreiden met behulp van besturingselementen van derden, en u kunt uw eigen functies en procedures schrijven voor uw eigen specifieke behoeften.

Een snelle manier om aan de slag te gaan met VBA-programmering is door eerst een Access macro te maken en deze vervolgens te converteren naar VBA-code. Instructies hiervoor vindt u in de sectie Macro's converteren naar VBA-code. U maakt op deze manier een nieuwe VBA-module die de equivalente bewerkingen uit de macro uitvoert. Bovendien wordt Visual Basic Editor geopend, zodat u de procedure kunt gaan wijzigen. Wanneer u in Visual Basic Editor werkt, kunt u op trefwoorden klikken en op F1 drukken om Access Help voor ontwikkelaars te starten en meer te weten te komen over elk trefwoord. Vervolgens kunt u Access Help voor ontwikkelaars verkennen en nieuwe opdrachten ontdekken om u te helpen de gewenste programmeertaken uit te voeren.

Naar boven

Macro's converteren naar VBA-code

U kunt Access gebruiken om macro's automatisch te converteren naar VBA-modules of klassemodules. U kunt macro's converteren die zijn gekoppeld aan een formulier of rapport, ongeacht of ze bestaan als aparte objecten of als ingesloten macro's. Het is ook mogelijk om algemene macro's te converteren, die dus niet zijn gekoppeld aan een bepaald formulier of rapport.

Macro's converteren die zijn gekoppeld aan een formulier of rapport

Met deze procedure worden alle macro's waarnaar wordt verwezen door (of die zijn ingesloten in) een formulier of rapport (of een van de bijbehorende besturingselementen) geconverteerd naar VBA en wordt de VBA-code toegevoegd aan de klassemodule van het formulier of rapport. De klassemodule wordt onderdeel van het formulier of rapport en blijft bij het formulier of rapport wanneer dit wordt verplaatst of gekopieerd.

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport en klik vervolgens op Ontwerpweergave.

  2. Klik op het tabblad Formulierontwerp in de groep Extra op Macro's van formulier converteren naar Visual Basic of Macro's van rapport converteren naar Visual Basic.

  3. Selecteer in het dialoogvenster Formuliermacro's converteren of Rapportmacro's converteren of u Access foutafhandelingscode wilt toevoegen aan de functies die worden gegenereerd. Als beschrijvingen hebt opgenomen in de macro's, kunt u deze desgewenst ook overbrengen naar de functies. Klik op Converteren om door te gaan.

    Als er geen klassemodule bestaat voor het formulier of rapport, maakt Access er een en voegt een procedure toe aan de module voor elke macro die aan het formulier of rapport is gekoppeld. Access wijzigt ook de gebeurtenis-eigenschappen van het formulier of rapport, zodat de nieuwe VBA-procedures worden uitgevoerd in plaats van de macro's.

  4. De VBA-code weergeven en bewerken:

    1. Als het eigenschappenvenster nog niet wordt weergegeven, drukt u op F4 terwijl het formulier of rapport is geopend in de ontwerpweergave.

    2. Klik op het tabblad Gebeurtenis van het eigenschappenvenster in een eigenschappenvak waarin [Gebeurtenisprocedure] wordt weergegeven en klik vervolgens op de knop Build Knopvlak. Als u de gebeurteniseigenschappen voor een bepaald besturingselement wilt weergeven, klikt u op het besturingselement om dit te selecteren. Als u de gebeurteniseigenschappen voor het hele formulier of rapport wilt bekijken, selecteert u Formulier of Rapport in de vervolgkeuzelijst bovenaan het eigenschappenvenster.

      Access de Visual Basic Editor opent en de gebeurtenisprocedure in de bijbehorende klassemodule weergeeft. U kunt omhoog of omlaag scrollen om eventuele andere procedures in de klassemodule te bekijken.

Algemene macro's converteren

  1. Klik in het navigatiedeelvenster met de rechtermuisknop op de macro die u wilt converteren en klik vervolgens op Ontwerpweergave.

  2. Klik op het tabblad Macroontwerp in de groep Extra op Macro's converteren naar Visual Basic.

  3. Selecteer de gewenste opties in het dialoogvenster Macro converteren en klik vervolgens op Converteren.

    Access converteert de macro en opent u de Visual Basic Editor.

  4. De VBA-code weergeven en bewerken:

    1. Als in Visual Basic Editor het deelvenster Projectverkenner niet wordt weergegeven, klikt u in het menu Beeld op Projectverkenner.

    2. Vouw de boomstructuur uit onder de naam van de database waarin u werkt.

    3. Dubbelklik onder Modules op de module Geconverteerde macro- macronaam.

      De module wordt geopend in Visual Basic Editor.

Een VBA-functie koppelen aan een gebeurteniseigenschap

Wanneer u een globale macro converteert naar VBA, wordt de VBA-code in een standaardmodule geplaatst. In tegenstelling tot een klasmodule maakt een standaardmodule geen deel uit van een formulier of rapport. U wilt de functie waarschijnlijk koppelen aan een gebeurteniseigenschap in een formulier, rapport of besturingselement, zodat de code precies wordt uitgevoerd waar en wanneer u wilt. Hiervoor kunt u de VBA-code kopiëren naar een klassemodule en deze vervolgens koppelen aan een gebeurteniseigenschap, of u kunt een speciale aanroep van de gebeurteniseigenschap naar de standaardmodule maken met behulp van de volgende procedure.

  1. Kijk in Visual Basic Editor wat de naam van de functie is. Als u bijvoorbeeld een macro met de naam MijnMacro hebt geconverteerd, is de naam van de functie MijnMacro().

  2. Sluit Visual Basic Editor af.

  3. Klik in het navigatiedeelvenster met de rechtermuisknop op het formulier of rapport waaraan u de functie wilt koppelen en klik vervolgens op Ontwerpweergave.

  4. Klik op het besturingselement of de sectie waaraan u de functie wilt koppelen.

  5. Druk op F4 om het eigenschappenvenster weer te geven, als dat nog niet wordt weergegeven.

  6. Klik op het tabblad Gebeurtenis van het eigenschappenvenster in het vak van de gebeurteniseigenschap waaraan u de functie wilt koppelen.

  7. Typ in het eigenschappenvak een gelijkteken (=) gevolgd door de naam van de functie, bijvoorbeeld =MijnMacro(). Vergeet de haakjes niet.

  8. Sla het formulier of rapport op door op de werkbalk Snelle toegang te klikken op Opslaan.

  9. Dubbelklik in het navigatiedeelvenster op het formulier of rapport, en kijk of de code op de juiste manier wordt uitgevoerd.

U kent nu de basisstappen voor het toevoegen van VBA-code aan uw database. In dit artikel worden alleen de basisbeginselen beschreven van hoe u aan de slag gaat. er zijn veel uitstekende naslagwerken en online bronnen die u kunnen helpen uw programmeervaardigheden op te bouwen.

Zie ook

Een macro voor de gebruikersinterface (UI) maken

Een Access-macro uitvoeren via een sneltoets

Opstartgebeurtenissen automatiseren met een macro

Een macro maken die wordt uitgevoerd als u een database opent

Volgorde van gebeurtenissen voor databaseobjecten

Naar boven

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.