Door aan de slag te gaan met code optimaliseren in Excel VBA verkort u deze niet alleen, maar maakt u ‘m ook sneller. Onderstaand fragment is afkomstig uit Het complete Boek Excel VBA voor professionals, 4e editie.
Aan de ene kant kunt u tijd besparen als u codes sneller kunt opstellen. Codewoorden uit een menu aanklikken in Excel VBA gaat sneller dan ze zelf typen (en foutloos). Codes die u kreeg door een macro op te nemen, kunt u vaak korter maken. Als u weet hoe dat gaat, kunt u ze zelf ook meteen kort typen.
Als u eenmaal een macro hebt en u wilt die door een andere procedure laten gebruiken, doet u aan hergebruik. Aan de andere kant kunt u de uitvoering van de procedure (iets) sneller laten verlopen. In de eerste plaats door overbodige opdrachten die de zaak vertragen weg te halen. Verder door eigenschappen die u tijdens een opname niet hebt gekozen, te verwijderen. Of door eigenschappen die bij hetzelfde object horen, in een blok With…End With te plaatsen. Ook zaken als schermverversing en automatisch het werkblad berekenen vragen onnodig tijd. U leest hoe u duizenden keren een dobbelsteen gooit; daarbij komen we nog even terug op het werken met variabelen.

Opgenomen macrocode inkorten
Veel codes kunt u korter maken. Als u een macro opneemt, wordt voor elke stap een regel aangemaakt. Deze opgenomen code is vrij lang en er staan vaak overbodige zaken in. U kunt opdrachten korter schrijven en zelfs hele series opdrachtregels weghalen. Daardoor is de code eenvoudiger te overzien en zal deze sneller worden uitgevoerd.
Select en Selection weghalen
Stel, u wilt een cel leeg maken met een macro. Om de code te krijgen, neemt u die handeling op: u klikt tijdens de opname bijvoorbeeld op A9 en dan op de Delete-toets. De code zal er als volgt uitzien.
Sub Macro1()
‘ Macro1 Macro
Range("A9").Select
Selection.ClearContents
End SubCel A9 wordt geselecteerd met de opdracht:
Range(“A9").Select
Vervolgens wordt de inhoud van deze selectie gewist met:
Selection.ClearContents
Om dit in twee stappen te doen, kost extra tijd en dat kan ook in één keer. U haalt Select en Selection er tussenuit, zodat de code er als volgt uitziet.
Sub Macro1()
‘Deze macro is ingekort
Range("A9").ClearContents
End Sub💡 Vermijd Select
Probeer in het algemeen zo veel mogelijk het statement Select te vermijden. Want dat is vaak een onnodige tussenstop en kan maken dat het beeldscherm flikkert.
Van vier regels één maken
Als u een macro opneemt die cel A1 kopieert en plakt in A2, ziet de code er na de opname als volgt uit.
Sub Macro2()
‘Deze macro is opgenomen
Range("A1").Select
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
End SubIn de derde opdracht wordt A2 geselecteerd met:
Range(“A2").Select
De kopie wordt daarin geplakt met:
ActiveSheet.Paste
U mag ook meteen aangeven dat de kopie in A2 moet worden geplakt, door Range(“A2") achter Copy te plaatsen (u gebruikt dan stilzwijgend het argument Destination, wat in hoofdstuk 4, de paragraaf Kopiëren met een korte code van mijn boek wordt uitgelegd). Dan mag u ook ActiveSheet.Paste weglaten en is de code:
Sub Macro2()
‘Deze macro is ingekort
Range("A1").Select
Selection.Copy Range("A2")
End SubVervolgens kunnen (zoals u zopas zag) de stappen Select en Selection eruit. Dus kunt u de vier regels van de opgenomen code vervangen door de ene regel:
Sub Macro2()
‘Deze macro is fors ingekort
Range("A1").Copy Range("A2")
End SubU zult merken dat de procedure er sneller van wordt, zeker als deze meer van dit soort bewerkingen moet uitvoeren.
Gebied van cellen
Dit werkt ook bij een gebied van cellen. Onderstaande code kopieert het gebied A1 tot en met A4, gaat naar D1 en plakt de selectie; de kopie wordt geplakt in D1 tot en met D4.
Sub Macro3()
Range("A1:A4").Select
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
End SubU geeft weer aan dat de kopie in D1 moet komen door de bestemming Range(“D1") meteen achter Selection.Copy te plaatsen, als volgt:
Sub Macro3()
Range("A1:A4").Select
Selection.Copy Range("D1")
End SubVervolgens voegt u de beide regels samen, zodat u van de vier opdrachtregels één regel overhoudt.
Sub Macro3()
Range("A1:A4").Copy Range("D1")
End SubHier duidt D1 aan dat de kopie wordt geplakt vanaf D1, de kopie van het blok A1 tot en met A4 komt in D1 tot en met D4.
In mijn boek ga ik nog veel meer op het onderwerp optimaliseren van code in!
Het Complete Boek Excel VBA voor professionals
Als u vaak dezelfde bewerkingen in Excel uitvoert, laat ze dan door een macro doen. Die doet het automatisch, supersnel en nauwkeurig. Zo bespaart u zeeën van tijd, wordt uw werk gemakkelijker en profiteert u meer van de kracht van Excel. Macro’s worden geschreven in de taal VBA (Visual Basic for Applications). Daarin kunt u ook eigen rekenfuncties schrijven en dialoogvensters ontwerpen, waardoor u Excel nog krachtiger en veelzijdiger maakt.
In dit boek vindt u 550 macro’s en 40 rekenfuncties. Bij alle voorbeelden wordt stap voor stap uitgelegd hoe ze werken. Zo leert u in Het Complete Boek Excel VBA voor professionals de principes van VBA en kunt u ze aanpassen voor uw eigen werk.
De recentste tips over Microsoft Excel:

Verwijzingen absoluut maken in Excel
Met het verwijzingen absoluut maken in Excel, zorg je voor meer controle over je rekenwerk. In voorkomende gevallen is dat verdraaid handig en zelfs noodzakelijk.

Excel Werkblad snel kopiëren naar een ander bestand
U kunt een Excel werkblad snel kopiëren naar Een ander bestand. Hoe, dat leest u in deze blogpost.

Werkbladen met maanden en weken in Excel
Werkbladen met maanden en weken maken in Excel is prima automatisch te regelen, zoals u in dit artikel kunt lezen.

Tijdsverschillen berekenen in Excel
Hoe laat is het op dit moment in – laten we zeggen – Shanghai? Tijdsverschillen berekenen in Excel is heel eenvoudig! In deze blogpost laat ik zien hoe je dat doet.

Objectgeoriënteerd programmeren in Excel
Leer in dit artikel de basisbeginselen van objectgeoriënteerd programmeren in Excel (en ook wat objecten zijn).

Een Excel-macro genereren met ChatGPT
ChatGPT kan niet alleen goed overweg met tekst, maar ook met code. Een Excel-macro genereren met ChatGPT blijkt verrassend goed te gaan.
Al onze Excel-tips en trucs vind je HIER

Wim de Groot schrijft artikelen over Excel voor het populaire tijdschrift ComputerIdee en boeken bij van Duuren Media. Als freelance auteur heeft hij al vele lezers weten te boeien met dit rekenprogramma. Hij begeleidt in de gezondheidszorg mensen op het gebied van levensvragen. Daarbij is helder communiceren van groot belang. Dat hij helder kan communiceren blijkt ook in zijn uitleg van Excel. Aan beginnende en gevorderde gebruikers laat hij zien hoe ze de mogelijkheden van dit rekenwonder kunnen benutten. Als nuchtere noorderling doet hij niet moeilijk over zaken die ingewikkeld lijken. Zijn doel is om u plezier te laten beleven aan uw computer en aan Excel in het bijzonder. De boeken van Wim vind je hier.



Leuk dat ik jou vond tijdens mijn zoeken naar een bruikbare VBA.
Maar niet dus.
Ik wil een cel laten knipperen als ergens aan een voorwaarde is voldaan.
Voor mij te lastig.
In een rijtje cellen komen wekelijks allerlei andere verschillende datums.
Als de laagste datum gelijk is aan vandaag moet een andere cel gaan knipperen.
Ik heb gehoord dat het niet met een VBA hoeft, maar de meeste mensen zeggen dat het alleen met VBA kan.
Maar goed, wat moest er dan in die macro staan.
Kan en wil jij me dat mailen ?
Alvast dank.
J.P. Jansen
Amsterdam