Macro is traag, maar snel stappen

Fredric schreef over een probleem dat hij had met een macro. Als hij loopt de macro in de VB-editor met behulp van F8 (doorlopen van de macro), deze is voltooid in slechts een paar minuten. Als hij rent de macro regelrechte, het lijkt een eeuwigheid te duren om te lopen, vaak het nemen van 20 minuten of meer uit te voeren. Ook al Fredric's werkboek is groot (46 MB), de tijd tussen de twee methoden van hardlopen is hinderlijk.

Problemen als dit kan verbijsterend zijn en zij sommige zware analyse vaak om erachter te komen. Een goede plek om te beginnen is om een ​​aantal "timer code" in uw macro toevoegen. Voeg een kleine routine die een tijdswaarde en een andere routine die vergelijkt die opgeslagen waarde aan de huidige tijd en toont het verschil bespaart. Aan het begin van een deel van de code die u wilt analyseren, het eerste routine bel je (die de start tijd bespaart) en vervolgens aan het eind van de sectie van de code die u de tweede routine noemen. Op die manier kunt u bepalen welke delen van de code zijn de langste tijd om uit te voeren nemen. Dit zijn de code secties je dan richten op, zodat je kunt achterhalen wat ze doen, dat is zo lang duurt.

Een ander ding om te controleren is dat je deze twee regels toe te voegen aan het begin van je macro:

Application.ScreenUpdating = False
Application.EnableEvents = False

Deze uit te schakelen scherm bijwerken, die kan vertragen een lopende macro, en evenementen uit te schakelen. Deze laatste regel is opgenomen, zodat veranderingen gedaan door de macro in het werkblad niet zal leiden tot Excel herberekening routines. Als uw macro is het maken van een hoop veranderingen in de gegevens in het werkblad, en een volledige herberekening wordt geactiveerd na elke wijziging, dan met zo'n grote werkboek, kan veel en veel tijd worden besteed gewoon doen het herberekenen. Aan het einde van uw macro, u het effect van de twee lijnen die u hebt toegevoegd om te draaien:

Application.EnableEvents = True
Application.ScreenUpdating = True

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (2436) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vindt u hier: Langzaam macro wordt uitgevoerd, maar snel stappen.