Steven från Australien skriver:
Jag har skapat ett VBA-makro som måste skapa cirka 50 diagram från ett kalkylblad. Problemet är att varje gång jag kör programmet när jag kommer till 33: e diagrammet visas ett felmeddelande "Inte tillräckligt med minne", då låser Excel-programmet upp och jag måste avsluta programmet. Jag har 256 megapixel RAM i min dator och jag använder Excel 97 i ett Windows NT-operativsystem.
Skapar du varje diagram som ett eget diagramark? Excel kan hantera 16 miljoner celler i ett kalkylblad, men den tysta hemligheten är att den inte kan hantera många kalkylblad. Hjälpfilen säger att antalet kalkylblad är begränsat av "tillgängligt minne".
Jag upplever regelbundet det problem du har. Det är fruktansvärt frustrerande, för man vet aldrig när det är på väg att krascha. Om Visual Basic skulle ge dig ett fällbart fel kan du stoppa makrot, spara filen, börja i en ny fil. Men de gör det inte - du får bara en krasch.
Jag har sett kraschen inträffa så sent som 130 kalkylblad och så tidigt som 40. Du måste mäta var det kommer att krascha i ditt system och sedan sätta en räknare i makrot. Om du tror att du kommer att krascha efter 32 diagram, stoppa sedan processen vid 30 diagram, spara dem i en ny arbetsbok, stäng den arbetsboken och börja skapa dem igen i en ny arbetsbok.
Det här är inte vackert, men det är den enda lösningen som jag har hittat.
En annan tanke - se till att du stänger varje modul och användarform i Visual Basic Editor med "X" i det övre högra hörnet. Jag har upptäckt att genom att helt enkelt stänga alla komponenter i Visual Basic innan du kör makrot kan du frigöra lite mer minne och eventuellt pressa in några fler diagram i det "tillgängliga minnet".
Ovan talade jag om att göra saker för att spara minne. Steven skrev tillbaka idag med en utmärkt upptäckt:
Jag upptäckte att om jag ställde in Charts AutoScaleFont till False, kunde jag skapa cirka 120 diagram, vilket har löst mitt problem.
Varför detta är så har jag ingen aning om, men det är Excel. Utmärkt tips - ta bort den här som en dunkel metod för att spara minne.