Steven van Australia schrijft:
Ik heb een VBA-macro gemaakt die ongeveer 50 grafieken van één werkblad moet maken. Het probleem is dat elke keer dat ik het programma start wanneer ik bij de 33e kaart kom, een foutmelding "Niet genoeg geheugen" weergeeft, het Excel-programma vastloopt en ik het programma moet beëindigen. Ik heb 256 MB RAM op mijn pc en ik gebruik Excel 97 in een Windows NT-besturingssysteem.
Maakt u elke grafiek als een eigen grafiekblad? Excel kan 16 miljoen cellen op een werkblad aan, maar het stille geheim is dat het niet veel werkbladen kan verwerken. Het helpbestand zegt dat het aantal werkbladen wordt beperkt door "beschikbaar geheugen".
Ik ervaar regelmatig het probleem dat u heeft. Het is vreselijk frustrerend, omdat je nooit weet wanneer het gaat crashen. Als Visual Basic u een trappable error zou geven, kunt u de macro stoppen, het bestand opslaan en in een nieuw bestand beginnen. Maar dat doen ze niet - u krijgt gewoon een crash.
Ik heb de crash zien gebeuren na 130 werkbladen en al in 40. Je moet peilen waar het zal crashen in je systeem en dan een teller in de macro plaatsen. Als je denkt dat je crasht na 32 grafieken, stop dan het proces bij 30 grafieken, sla ze op in een nieuwe werkmap, sluit die werkmap en begin ze opnieuw te maken in een nieuwe werkmap.
Dit is niet mooi, maar het is de enige oplossing die ik heb gevonden.
Nog een gedachte - zorg ervoor dat u elke module en elk gebruikersformulier in de Visual Basic Editor sluit met de "X" in de rechterbovenhoek. Ik heb gemerkt dat door simpelweg alle componenten in Visual Basic te sluiten voordat je de macro start, je wat meer geheugen vrij kunt maken en mogelijk nog een paar grafieken in het "beschikbare geheugen" kunt persen.
Hierboven had ik het over dingen doen om geheugen te sparen. Steven schreef vandaag terug met een uitstekende ontdekking:
Ik ontdekte dat als ik het AutoScaleFont-diagram op False instelde, ik ongeveer 120 diagrammen kon maken, wat mijn probleem heeft opgelost.
Waarom dit zo is, heb ik geen idee, maar dat is Excel. Uitstekende tip - stop deze weg als een obscure methode om geheugen te besparen.