Een introductievenster maken in Excel met VBA

wow

Visual Basic for Applications (VBA)  is de programmeertaal die achter alle applicaties van MS Office actief is. Je kunt VBA gebruiken om repeterende handelingen te automatiseren, of om extra mogelijkheden in je applicatie te bouwen. VBA wordt vaak gebruikt voor Excel, maar het werkt óók voor alle andere programma’s van Office, zelfs voor PowerPoint en Outlook!

VBA is een programmeertaal, maar je hoeft geen volleerd programmeur te zijn om leuke dingen te bouwen die je bestanden nét dat beetje extra geven. In deze blog leggen wij uit hoe je een introductievenster kunt toevoegen aan je Excel werkmap met VBA.


De Visual Basic Editor openen

Als je een uitgebreide werkmap hebt gebouwd in Excel, die ook bedoeld is voor andere gebruikers, is het natuurlijk leuk om er iets persoonlijks van te maken. Zeker als hij ook wordt gebruikt door mensen buiten je eigen organisatie.

Je kunt, zonder veel te weten van het programmeren in VBA, een eigen introductievenster bouwen waarmee je werkmap automatisch start. Je doet dit met behulp van een formulier.

Het formulier maak je in de Visual Basic Editor. De Visual Basic Editor kun je altijd openen met de toetsencombinatie Alt + F11. Je krijgt dan het volgende venster te zien:

Voor de mensen die al heel lang met MS Office werken, zal het venster er bekend uitzien. Het venster werkt namelijk met dezelfde menu’s als de oude versies van Office.


Het formulier maken

Via het menu Invoegen kun je kiezen wat je aan jouw VBA-project wilt toevoegen. Voor dit project kiezen wij voor Formulier. In VBA heet dat een UserForm. Je krijgt nu een leeg formulier te zien.

Naast het formulier vind je de Werkset Besturingselementen. Deze kun je gebruiken om allerlei zaken aan je formulier toe te voegen, zoals keuzelijsten en selectievakken. Aan dit formulier voegen wij eerst een opdrachtknop toe.

Deze opdrachtknop gaan wij gebruiken om ervoor te zorgen dat het formulier verdwijnt als de gebruiker op Escape drukt. Dit doe je in twee stappen. Links onderin in de Visual Basic Editor vind je het eigenschappenvenster. Als je net toegevoegde knop nog geselecteerd is, zie je daar de eigenschappen van je opdrachtknop. Zet de eigenschap Cancel op True.


De code toevoegen

De gemaakte knop heeft één regel programmeercode nodig. Die moeten wij toevoegen aan het codevenster van de knop. Dat venster kun je openen door dubbel te klikken op de knop op je formulier. Je ziet dan al een aantal regels staan. Het begint met Private Sub en eindigt met End Sub. Een macro wordt in VBA altijd een Sub genoemd.

Tussen deze twee regels zet je de volgende tekst: Unload Me

Je hebt dan de volgende code:

Ga terug naar het formulier door dubbel te klikken op Userform 1 aan de linkerkant van het venster.


Een afbeelding toevoegen

De volgende stap is het toevoegen van een afbeelding. Dit doe je door in de werkset te kiezen voor Afbeelding en daarna een vierkant te tekenen zo groot als je de afbeelding wilt hebben. Het plaatje mag de knop bedekken, die hebben we verder niet meer nodig.

Kies vervolgens in het eigenschappenvenster van Image1 bij Picture voor de afbeelding die je wilt gebruiken. Dat doe je door op de drie puntjes achter Picture te klikken.


Werkmap openen met het aangemaakte formulier

Nu willen wij toevoegen dat de werkmap moet openen met het net aangemaakte formulier. Ook daarvoor biedt VBA een handige functie. Dubbelklik links bovenin in het vak onder Project (dit heet de Projectverkenner) op ThisWorkbook. Dit is je huidige werkmap. De VBA-editor opent dan een nieuw venster. Bovenin staan twee keuzevakken. Kies in het eerste keuzevak Workbook en in het tweede keuzevak Open.

Ook hier voegt VBA weer keurig netjes het begin en het einde van de macro voor je in. Tussen deze twee regels zet je het volgende commando:

              UserForm1.Show

Hierdoor zie je, als je de werkmap opent, eerst je formulier!

Nu willen wij er nog voor zorgen dat Excel als je gebruiker niet op Escape drukt, na tien seconden toch het formulier sluit. Daarvoor hebben wij nog een regel nodig in de programmeercode van het formulier zelf. Klik hiervoor aan de linkerkant met de rechtermuisknop op UserForm. Kies dan Programmacode weergeven.

Gebruik opnieuw de keuzelijsten bovenin. Nu kies je voor UserForm aan de linkerkant en Activate aan de rechterkant.

Typ de volgende tekst tussen de twee commando’s die je krijgt:

In deze programmeercode wordt verwezen naar KillTheForm. Dit is echter geen standaard commando voor VBA. Eerder gebruikten we Unload Me. Dat is wel een standaard commando voor VBA.

Om ervoor te zorgen dat je project begrijpt wat je bedoelt met KillTheForm, moeten we nog één regel programmacode toevoegen. Dit doe je in de algemene module van het project. Helaas hebben wij die nu nog niet. Deze module kun je invoegen door in de menubalk te kiezen voor Invoegen en dan Module.

Typ hier nu eerst: Sub KillTheForm

Als je op Enter drukt, zet VBA er zelf End Sub eronder. Typ tussen de regels: Unload UserForm1. Wij gebruiken hier geen Unload Me. Dat kon eerder wel, omdat de knop onderdeel is van het formulier. Nu maken wij dit statement in een algemene module, dus moeten wij zeggen welk onderdeel hij dan moet sluiten.

Sla ten slotte het project op en vergeet niet om bij het opslaan te kiezen voor Excel-Werkmap met Macro’s. Anders is al je werk voor niets geweest!

Sluit de werkmap en open hem opnieuw. Je werkmap opent met het net aangemaakte formulier!

Wil meer weten over het werken met VBA in Excel? Of meer weten over formulieren en hoe je deze kan toepassen? Schrijf je dan nu in voor een cursus VBA voor Excel, Word of Access!

Met bijzondere dank aan onze VBA-docent Ariane Danneburg voor het schrijven van deze blog!