Få store makroer kjøres

December 24  by Eliza

Jeg snakket med en kollega en stund tilbake, og han beskrev et problem han hadde med en makro kjører på en meget kraftig datasystem. Det virker som makroen vil alltid krasje og fryse maskinen, alltid med en ut av minnefeil. Min kollega tenkte at hvis makroen kan kjøre i bakgrunnen, at det ikke ville bruke så mange ressurser og ville ikke krasje.

Jeg visste at den foreslåtte løsningen ikke nødvendigvis ville løse problemet, men. Mens det kan frigjøre noen ressurser, ville systemet fortsatt til slutt går tom for minne. Hvorfor? Fordi out-of-minne problemer er vanligvis på grunn av koding problemer i den opprinnelige makro. "Minne lekkasjer" (som fører til out-of-minne tilstand) kan være forårsaket av en rekke problemer i makrokode.

Den beste løsningen er en runde med kveldsåpne debugging, stepping gjennom makrokode og analysere hvor problemet er snikende i. Se etter det mest åpenbare (men lett oversett) problemer først, slik som uendelige løkker. Hvis makroen gjør mye repeterende behandling (looping gjennom regneark), så sørg for at du slipper alt minnet du erklære for makroen. For eksempel, for hver SET-setningen du bruker, bør du ha en tilsvarende redegjørelse for objektet til ingenting, og disse utsagnene skal være i sløyfen.

Hvis du kan gå gjennom makroer uten dem mislykkes, så er det en god sjanse for at problemet ligger i en slags tidsproblem i gjengene-en timing problem som bare dukker opp, selvfølgelig, når makro kjører full tilt på sin egen. Hvis du mistenker at dette er problemet, så kanskje en re-sekvensering av hendelsene i makro kan omgå den. Hvis makroen bruker DDE, bør du være klar over at Microsoft er å anbefale bruk av OLE automasjon stedet for DDE. Timing problemer er ganske vanlig med DDE, og Microsoft vurderer nå det foreldet og altfor flass å fikse (som betyr at de ikke vil støtte det). I VBA, kan flere samtaler til en subrutine også forårsake minnelekkasjer, og slike subrutiner må omskrives som brukerdefinerte funksjoner.

Du bør også sørge for at alle variable referanser er fullt erklært. Jeg har sett noen rapporter om makroer bli "forvirret" mellom regneark, og selv om du bruker Alt + Tab for å fjerne fokus fra Excel.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (2579) gjelder for Microsoft Excel 97, 2000, 2002, og 2003.