Makro kjører sakte, men Steps raskt

February 8  by Eliza

Fredric skrev om et problem han hadde med en makro. Når han kjører makroen i VB Editor med F8 (stepping gjennom makro), fullfører det i løpet av få minutter. Når han kjører makroen outright, synes det å ta en evighet å kjøre, ofte tar 20 minutter eller mer å kjøre. Selv om Fredric arbeidsboken er stor (46 MB), tidsforskjellen mellom de to metodene for løping er belastende.

Problemer som dette kan være uforståelig, og de ofte ta litt heavy-duty analyse for å finne ut. Et godt sted å begynne er å legge til noen "timer code" i makroen. Legg en liten rutine som sparer en tidsverdi og en annen rutine som sammen som reddet verdien til nåværende tid og viser forskjellen. I begynnelsen av en del av koden du ønsker å analysere, kaller du den første rutine (som sparer starttiden) og deretter på slutten av den delen av koden du kaller den andre rutine. På den måten kan du finne ut hvilke deler av koden din tar lengst tid å utføre. Dette er kode delene du deretter fokusere på, slik at du kan finne ut hva de gjør som tar så lang tid.

En annen ting å være sikker på er at du legger disse to linjene i begynnelsen av makroen:

Application.ScreenUpdating = False
Application.EnableEvents = False

Disse slår av skjermen oppdatering, noe som kan forsinke en løpende makro, og deaktivere hendelser. Denne siste linjen er inkludert, slik at endringer gjort av makroen i regnearket ikke vil utløse Excel rekalkulering rutiner. Hvis makroen gjør en rekke endringer i dataene i regnearket, og en full rekalkulering utløses etter hver endring, deretter med en så stor arbeidsbok, kan masse og masse tid bli brukt bare gjøre recalc. På slutten av makroen, snu deg effekten av de to linjene du har lagt til:

Application.EnableEvents = True
Application.ScreenUpdating = True

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (2436) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Makro kjører sakte, men Steps raskt.