Er is niets zo vervelend als je een mooi stukje VBA code hebt geschreven, je het om de één of andere reden niet aan de praat krijgt. In dit artikel ga ik je een aantal tips geven die jou gaan helpen om de fouten in je VBA code te herstellen.
1. Zet Error handling uit indien dit in je macro code zit
Error handling in je macro heeft vooral als functie om de gebruiker van het script geen lelijke foutmeldingen te laten zien. Maar het zorgt er ook voor dat je script niet stopt op de locatie in de code waar het fout loopt. Je code springt dan door naar je error handling waardoor je niet kunt zien waar het probleem in je code zich bevindt. Kortom, error handling is niet handig op het moment dat je fouten in je VBA code wilt herstellen.
Zorg er dus voor dat je de error handling uit commentarieert op het moment dat je de fout wilt opsporen. Dit doe je door een komma te plaatsen voor je ‘on error goto’ regel. Je zult zien dat deze code groen kleurt als je dit goed gedaan hebt.

2. Gebruik break points om je code gedurende een run stop te zetten
Het gebruik van break points is bij het oplossen van fouten in je script onmisbaar. Met breakpoints kun je een run van je macro op een specifieke regel laten pauzeren. Vanaf dit punt kun je dan makkelijk kijken wat voor werk de macro tot dat punt verricht heeft en welke waardes de gebruikte variabelen op dat moment hebben. Je plaatst een break point door met je linkermuisknop op het grijze vlak links van je code te klikken. Dus op de plek van het rode bolletje in de onderstaande afbeelding.

3. Gebruik het venster Lokale variabelen
Op het moment dat je een breakpoint hebt geplaatst in je macro zal je run op dat moment pauzeren. Je kunt op dat moment de waardes van je gebruikte variabelen uitlezen in het venster Lokale variabelen. Mocht dit venster niet zichtbaar zijn dan kun je deze onder het menu ‘Beeld’ selecteren.

In het onderstaande schermprintje van het venster Lokale Variabelen dat onder de code staat zie je een lijst met alle variabelen. je ziet daar de op dat moment toegekende waardes per variabele.

4. Ga regel voor regel door je code heen te gaan met de F8 toets om fouten in je VBA code te herstellen
Met de F5 toets speel je de gehele macro code af. Je kunt ook regel voor regel door je gehele code heen gaan met de toets F8. In de praktijk is dat niet erg efficiënt omdat dit lang kan duren. Wat handig werkt is om een breakpoint te plaatsen op de locatie in je script waarvan je weet dat daarvoor alles goed gecodeerd is. Vanaf dat punt kun je dan met F8 rustig door je code heen gaan om te kijken wat er precies gebeurt. Kijk goed hoe je code loopt en bestudeer per stap de ontwikkeling in de waardes van je variabelen. Zo kun je ontdekken wat er exact fout gaat in je code.
5. Pas If statements toe binnen loops om je code op een specifieke iteratie te pauzeren
Dit is een aanvullende tip op het gebruik van breakpoints om te bugfixen. Het kan namelijk zijn dat het punt waarop jouw specifieke code fout loopt zich bevindt in een loop met bijvoorbeeld 1000 iteraties. Als je dan je breakpoint binnen je loop plaatst dan zal je alsnog maximaal duizend keer op F5 moeten drukken tot je code op het punt belandt waar het fout gaat. Er is een handig hulpmiddel om je code te pauzeren op de juiste iteratie. Dit is het toepassen van een If Statement. Stel je For Next loop gebruikt de letter i om het aantal iteraties in op te slaan. Dan plaats je binnen de for loop op de meest geschikte plaats een if statement. Stel je weet door een foutcode dat je code fout gaat op iteratie 645. Dan plaats je voor dat moment binnen je loop de volgende If statement.
If i = 645 Then
    Pauzeer = "hier"
End If
De waarde toekenning ‘hier’ aan de variabele ‘Pauzeer’ is in dit geval niet relevant. Deze mag je vervangen door een actie naar keuze. Het punt is dat je op deze regel nu een breakpoint kunt plaatsen die je code op het juiste moment binnen je loop pauzeert.
6. Sla je Excel werkmap op voordat je een macro na een wijziging afspeelt
Dit is een tip die je eigenlijk wel weet, maar vaak ook weer vergeet. En op het moment dat je eraan denkt is het vaak al te laat. In de meeste gevallen geeft een macro die fout loopt netjes een foutcode mee alvorens hij zelfstandig stopt. Dit doet hij echter niet altijd. Het komt ook weleens voor dat je Excel applicatie compleet bevriest. Er resteert dan niets anders dan de applicatie af te sluiten. In dit geval ben je vaak een gedeelte van je geschreven code kwijt. Daarom is het een kleine moeite om even op de save knop te drukken alvorens je een macro afspeelt.
Ik hoop dat je ik je met deze informatie heb geholpen om zelfstandig je macro te kunnen herstellen. Mocht je professionele hulp nodig hebben. Schroom niet om contact met ons op te nemen.
							
			
Pingback:Error handling toepassen in je macro - Macro Excel Advies