Relatieve en absolute Macro’s

Wanneer we spreken over Macro’s, hebben we twee types Macro’s.
Je hebt de Relatieve Macro’s, en je hebt Absolute Macro’s.
Wanneer we een absolute macro opnemen, dan zal deze steeds worden uitgevoerd op dezelfde positie in het werkblad. Dit is trouwens de standaard-opname in Excel.
Wanneer we een relatieve macro opnemen, zal deze worden uitgevoerd op de plaats waar de cursor zich op dat moment bevindt in het werkblad.

Om een absolute macro op te nemen klik je in Excel 2007 en 2010 de knop “Opname starten/stoppen” (1), links onderaan in de “Statusbalk”.
In de versies 2003 en ervoor begint de Macro op te nemen van zodra de Macro-werkbalk (2) is geopend.
Om de opname te stoppen klik je in Excel 2007 en 2010 nogmaals de knop “Opname starten/stoppen” (1). En in Excel 2003 en ervoor, klik je de knop “Opname stoppen” (a) in de werkbalk.

Om een relatieve macro op te nemen, klik je in Excel 2007 en 2010 de knop “Relatieve verwijzingen gebruiken” (3) in het lint.
En om een relatieve macro op te nemen in Excel 2003 en ervoor, klik je de tweede knop (b) in de werkbalk.

les05_image001

Als voorbeeld zal ik twee identiek dezelfde Macro’s maken, de een absoluut, de ander relatief.

Ik begin met de absolute, dus hoef ik verder niks te doen dan de knop “Opname starten” te klikken.
Je zult wel weten waar je deze kunt vinden.
Wanneer deze is geklikt opent het dialoogvenster “macro opnemen”. Dit is voor elke versie hetzelfde.
Geef in het bovenste vak de macro een naam. De naam van een macro mag enkel letters en nummers bevatten. Geen spaties.
In het volgende vak geef je een sneltoetscombinatie in, om de macro uit te voeren. Dit hoeft niet maar ik vind dit wel makkelijker. Hoef ik niet steeds het macrovenster te openen, en de knop “Uitvoeren” te klikken.
Let erop dat de sneltoetscombinatie nog niet bestaat in Excel, zoals Ctrl+C, anders wordt deze overschreven. Het veiligste is dat wanneer je een sneltoetscombinatie intypt, ook de Shift toets op je toetsenbord ingedrukt houdt. Dit zal steeds de sneltoetscombinatie met de Shift-toets aanvullen.
In het volgende vak geef je een beschrijving in van de macro. Altijd makkelijk voor later.
Klik de knop OK.
Van zodra je nu ook maar iets klikt in de applicatie, of iets typt op je toetsenbord, wordt dit opgenomen in de macro. Stop het opnemen van de macro wanneer je kaar bent.
Als voorbeeld typ ik maandag in de eerste cel, en klik en sleep de vulgreep om de rest van de dagen aan te vullen.

les05_image002
Hetzelfde doe ik voor de relatieve macro.
Alleen klik ik nu eerst de knop “Relatieve verwijzingen gebruiken” in het lint of in de Macro-werkbalk.
In het venster “macro opnemen” geef ik de macro een naam, geef hem de sneltoetscombinatie Ctrl+Shift+R, en geef hem een veelzeggende omschrijving.
Klik OK wanneer je klaar bent,
Hetzelfde hier, ik typ maandag in de eerste cel, en klik en sleep de vulgreep om de rest van de dagen aan te vullen. Stop het opnemen van de macro wanneer je kaar bent.

les05_image004
Wanneer we nu het venster “Macro” openen (klik hiervoor de knop Macro’s in het lint, of in het drop-downmenu wanneer je werkt met Excel 2003 of ervoor), zie je beide macro’s vermeld in het venster.
Klik de knop “Bewerken”…

les05_image003
… en het venster “Microsoft Visual Basic for Applications” (VBA in het kort) opent.
De sneltoetscombinatie om het VBA-venster te openen of te sluiten is Alt+F11 op je toetsenbord.

les05_image005
Wat zien we in dit venster.
In het midden van het VBA-venster zien we de VBA-code waar de twee zojuist opgenomen macro’s worden weergegeven.
De tekst in het groen is commentaar. Commentaar wordt steeds voorafgegaan door het apostrof-teken (‘).
Hier mag je mee doen wat je wil, dit zal niks wijzigen in de macro. Wijzig je hier bijvoorbeeld de sneltoets (1), dan zal dit helemaal geen effect hebben op de macro, noch de sneltoets die je moet klikken om deze uit te voeren.

Alle VBA-code wordt weergegeven in het zwart.
Wijzig je hier iets, zal dit wel de macro wijzigen.
Bijvoorbeeld, wijzig ik de tekst “maandag” (2) in de code naar “GratisCursus”, dan zal in elke cel de tekst GratisCursus komen te staan in plaats van de weekdagen, wanneer je de macro uitvoert.

Wanneer je de code van beide macro’s bekijkt, zie je dat er weinig verschil is tussen de twee. Het enige verschil is waar de code het bereikt bepaalt van de macro.
Maar meer over VBA-code in de volgende lessen.

Formidabel U hebt Les 5 voltooid START VOLGENDE LES