In dit artikel leg ik uit welke mogelijkheden er zijn om een Macro of VBA module te starten. Als je helemaal nog niets weet van VBA en Macros is het verstandig eerst de volgende artikelen te lezen:
- Excel VBA en Macros – Werken met Excel onder de motorkap – Het nut van VBA/Macros
- Eerste stappen in Visual Basic for Applications – Leer een eigen macro maken met VBA
Er zijn in Excel verschillende mogelijkheden om een VBA module (Macro) op te starten. Ik behandel in dit artikel de meest toegepaste werkwijzen:
- Handmatig opstarten
- Met behulp van een snel toets
- Door middel van knoppen in het werkblad
- Op basis van een actie in Excel
- Toevoegen van de macro aan het menu
In dit artikel zullen we de mogelijkheden om een macro op te starten nader toelichten.
1. Handmatig opstarten
De meest gebruikte wijze op een macro op te starten is door deze handmatig op te starten. Selecteer hiervoor het tabblad ontwikkelaars
Klik vervolgens op de button ‘Macro’s’
Vervolgens wordt scherm geopend waarin je eerder opgeslagen macro’s kunt openen.
We kiezen nu de macro DatumTijdStempel en kiezen voor uitvoeren. Je zult zien dat de huidige datum en tijd in de geselecteerde cel getoond worden.
2. Door middel van een sneltoets
Wanneer de macro is gemaakt kun je deze ook opstarten doordat de macro/ module wordt gekoppeld aan een sneltoets. Dit is erg handig wanneer de Macro vaak wordt gebruikt.
Doorloop de zelfde stappen als onder hoofdstuk 1 en kies voor Opties.
Vul onder Sneltoets een leesteken in en kies voor OK. Door de combinatie van de Ctrl toets met het gekozen leesteken (in dit geval q) wordt de Macro opgestart.
3. Door middel van knoppen in het werkblad
Daarnaast is er de mogelijkheid onder Invoegen een Macro knop aan te maken. In Excel wordt een besturingselement zoals een knop een object genoemd.
Wanneer je voor ‘Invoegen‘ kiest en vervolgens het icoontje linksboven selecteert creëer je een knop die de macro activeert wanneer hier op geklikt wordt.
Na het selecteren van dit icoon kun je op een willekeurige plek in het Excel werkblad klikken. Het volgende scherm verschijnt:
Wijs de macro (DatumTijdStempel) toe aan het object (de knop) en kies voor OK.
Het voordeel van deze methode is dat ook gebruikers die de Ontwikkelaars functionaliteit niet tot hun beschikking hebben de Macro toch gebruiken.
4. Door middel van een actie in Excel
Het is ook mogelijk om een macro uit te voeren wanneer in een Excelbestand of een specifiek werkblad een actie wordt uitgevoerd. Zo kun je bijvoorbeeld een macro uitvoeren bij het openen van een Excel document of voor het opslaan van het Excel document maar bijvoorbeeld ook wanneer het scherm vergroot of verkleind wordt.
Klik op de button ‘Macro’s’
Het scherm met de beschikbare macros verschijnt. Kies voor Bewerken
De VBA code onder de Macro wordt getoond. Een Macro word als module opgeslagen.
In dit geval is het niet de bedoeling dat de code als module wordt opgeslagen maar onderdeel wordt van een actie in Excel. We zullen daarvoor de code moeten toewijzen aan het bestand of specifiek werkblad. In dit geval willen we dat de DatumTijdstempel wordt uitgevoerd zodra het Excel bestand wordt geopend.
Kopieer hiervoor eerst de code uit de module tussen de regels waarin ‘Sub’ staat. Deze code gaan we in dit geval toewijzen het werkboek (bestand).
Klik onder Excel objecten op ‘ThisWorkbook’.
Na het kiezen van ‘ThisWorkbook’ kun je bovenin het dialoogscherm links kiezen voor ‘Workbook’. Hiermee vertellen we Excel dat de code van toepassing is op het gehele bestand.
Rechts kun je kiezen uit een groot aantal Excel acties. Hier mee vertellen we Excel bij welke gebeurtenis de code/ macro moet worden uitgevoerd. We kiezen voor ‘Open’. Immers, bij het openen van het bestand moet de actie uitgevoerd worden.
Plak vervolgens de code tussen de regels met ‘Sub’.
Sla de macro op. Wanneer vervolgens het bestand wordt geopend wordt automatisch de DatumTijdStempel in de geselecteerde cel gezet.
5. Toevoegen van de macro aan het menu
Tenslotte kan een macro/ module ook nog worden gekoppeld aan het Excel menu. De macro kan zowel aan het lint als aan de werkbalk snelle toegang worden gekoppeld.
Kies in het menu voor Bestand – Opties
Nadat is gekozen voor opties verschijn het menu Opties voor Excel. In dit menu kun je, afhankelijk van waar je de module wilt koppelen, kiezen voor:
- Lint aanpassen óf
- Werkbalk Snelle toegang
In dit voorbeeld kies ik voor Werkbalk Snelle toegang maar voor een koppeling aan het lint werkt dit precies het zelfde
Je hebt kennis gemaakt met vijf mogelijkheden om een Macro/ Module in Excel te starten.
Veel succes met Excelleren!
Ik werk al heel lang met macro’s.
Ik heb een macro dat een andere xl-bestand opent om daar waarden op te halen en dan te gebruiken in het huidige bestand.
Als ik deze macro d.m.v. een button op de werkbalk “snelle toegang” start loopt het gesmeerd.
Als ik dezelfde macro start m.b.v. een sneltoets dan stopt de macro na het openen van het andere xl-bestand.
Wat kan hiervan de oorzaak zijn?
Dit komt meestal doordat de sneltoets combinatie al gebruikt wordt voor een ander, in Excel ingebouwd, doel. Die overschrijft de door de gebruiker gekozen combinatie. Wijzig de huidige sneltoets combinatie naar een nieuwe combinatie. Dat moet het probleem verhelpen.
Hallo. Ik heb een macro gemaakt die 2 tabbladen met elkaar vergelijkt. Wanneer ik een kopie maakt van dit excel bestand en vervolgens de macro run wordt het origineel ook geopend.
Hoe kan je dat voorkomen?
Hi, vermoedelijk gebruik je in de macro nog de verwijzing naar de naam van het oorspronkelijke bestand en moet je die hernoemen naar het juiste bestand.
Weet iemand hoe ik een macro kan aanmaken om middels 1 druk op de knop (een specifieke cel) het Excel-document naar een bepaald e-mailadres te mailen?
HI, dank voor je bericht. Daar zijn meerdere oplossingen voor. VBA en Macro’s zijn hiervoor een oplossing. Om de Excel zo onderhoudbaar en eenvoudig mogelijk te houden gebruik ik VBA en Macro’s alleen als er echt geen andere oplossing is. Voor de meest eenvoudige oplossing heb je geen macro nodig maar gebruik je de volgende formule: =HYPERLINK(“mailto:” & A2 & “?subject=” & A5 & “&body=”&B5; “Verzend mail”) waarbij
In cel A2 staat het email adres waarnaar de mail verstuurd moet worden
In cel A5 staat het onderwerp van de mail
In cel B5 staat de inhoud van de mail
Hopelijk is dit voor jou een goede oplossing. Neem anders even contact op via info@excelleren.nl