Fel i minnet i VBA

Denna handledning kommer att förklara VBA -minnesfelet.

VBA -minnesfelet uppstår när Excel har använt alla maskinens resurser medan du kör ett makro och bokstavligen tar slut på minnet för att fortsätta beräkna eller köra kod. Detta kan inträffa när du har många program som körs och försöker köra ett stort makro i Excel, eller kanske när du har skapat en evig loop i Excel av misstag.

(Se vår felhanteringsguide för mer information om VBA -fel)

Orsaker till minnesfel

Ett minnesfel kan uppstå om man arbetar med en arbetsbok som innehåller många kalkylblad och tusentals rader. Om vi ​​skapar en loop som fungerar med en stor datamängd kan ett minnesfel uppstå. Det kan också uppstå om vi arbetar med flera objekt och ställer in varje objekt med en SET -sats, men sedan inte rensar referenserna till objekten mellan procedurer eller slingor.

Till exempel kan följande slinga definitivt orsaka ett minnesfel om du har flera filer öppna med flera ark.

1234567891011121314 Sub TestMemory ()Dim wb Som arbetsbokDim ws Som arbetsbladDim i Som singelFör varje wb i Application.WorkbooksFör varje ws i wb.SheetsGör tills ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0) .VäljSlingaNästa wsNästa wbAvsluta Sub

Förhindra ett minnesfel

Släpp objekt

Om vi ​​arbetar med slingor och objekt måste vi se till att vi ställer in objektet på INGENTING när det har använts och det inte längre behövs - detta kommer att frigöra minne.

VBA -programmering | Kodgenerator fungerar för dig!

Se till att endast en instans av Excel körs

Om vi ​​arbetar med stora filer och stora mängder data, kontrollera att du inte har flera Excel -sessioner öppna - den måste bara vara öppen en gång. Ett sätt att kontrollera detta är att gå till Aktivitetshanteraren och se hur många instanser av Excel som körs.

Tryck Ctl+Alt+Delete på tangentbordet,

Klicka på Aktivitetshanteraren och se till att det bara finns en instans av Excel som körs. I grafiken nedan finns det en instans med 2 fönster.

Vi kan också kontrollera i Aktivitetshanteraren att det inte finns någon instans av Excel som körs i bakgrunden (dvs inte synlig).

Rulla ner i Aktivitetshanteraren tills du ser Bakgrundsprocesser och se till att Excel inte finns i listan över program.

Kontrollera storleken på din Excel -fil

Ofta finns det rader och kolumner som har använts under de i dina kalkylblad som faktiskt används. Excel använder minne i dessa celler - även om dessa celler är tomma. Kontrollera filens storlek genom att trycka på CTRL+SKIFT+SLUT på tangentbordet för att se var din cellpekare landar. Om den hamnar långt under den sista cellen du använder, se till att du tar bort alla tomma rader och kolumner ovanför cellpekaren och sparar sedan filen igen - detta minskar storleken på din Excel -fil.

Andra sätt att kontrollera minne

Det finns olika andra sätt att frigöra minne i Excel. En bra idé är att stänga Excel om du inte använder det och sedan öppna det senare - detta frigör allt minne som Excel lagrar eftersom det tenderar att lagra minne även när en arbetsbok inte är öppen! Se alltid till att din version av Office är uppdaterad genom att söka efter uppdateringar på din dator och kolla efter eventuella VBA -tillägg som kan användas, men som du inte använder - du kan avinstallera dessa för att frigöra ännu mer minne.

wave wave wave wave wave