Ovaj će vodič objasniti VBA pogrešku u memoriji.
Pogreška VBA Nema memorije javlja se kada je Excel iskoristio sve resurse vašeg stroja za vrijeme izvođenja makronaredbe i doslovno mu je ponestalo memorije za nastavak izračunavanja ili izvođenja koda. To bi se moglo dogoditi kada imate puno pokrenutih aplikacija i pokušate pokrenuti veliku makronaredbu u Excelu, ili možda ako ste greškom stvorili vječnu petlju u Excelu.
(Za više informacija o VBA pogreškama pogledajte naš Vodič za rješavanje pogrešaka)
Uzroci pogreške zbog nedostatka memorije
Do pogreške pri nedostatku memorije može doći ako radite s radnom knjigom koja sadrži mnogo radnih listova i tisuće redaka. Ako stvorimo petlju koja radi s velikom količinom podataka, mogla bi doći do pogreške u memoriji. To bi se također moglo dogoditi ako radimo s više objekata i svaki objekt postavimo izrazom SET, ali tada ne brišemo reference na objekte između procedura ili petlji.
Na primjer, sljedeća petlja bi definitivno mogla uzrokovati pogrešku u memoriji ako imate više datoteka otvorenih s više listova.
1234567891011121314 | Memorija podtesta ()Dim wb Kao radna bilježnicaZatamni kao radni listDim i As SingleZa svaku web stranicu U primjeni.Radne knjigeZa svaki ws U wb.SheetsUčiniti do ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0) .OdaberitePetljaSljedeći wsSljedeća wbKraj podm |
Sprječavanje pogreške zbog nedostatka memorije
Objekti za oslobađanje
Ako radimo s petljama i objektima, moramo se pobrinuti da postavimo Objekt na NIŠTA nakon što se upotrijebi i više mu nije potreban - to će osloboditi memoriju.
VBA programiranje | Generator koda radi za vas!
Uvjerite se da je pokrenuta samo jedna instanca programa Excel
Ako radimo s velikim datotekama i velikom količinom podataka, provjerite nemate li više otvorenih sesija programa Excel - potrebno ga je otvoriti samo jednom. To možete provjeriti ako odete u Upravitelj zadataka i vidite koliko instanci programa Excel radi.
Pritisnite Ctl+Alt+Delete na tipkovnici,
Kliknite na Upravitelj zadataka i provjerite radi li samo jedna instanca programa Excel. Na donjoj slici postoji jedna instanca s 2 prozora.
U Upravitelju zadataka također možemo provjeriti da u pozadini nema instance Excela (tj. Nije vidljiva).
Pomaknite se prema dolje u Upravitelju zadataka dok ne vidite Pozadinski procesi i provjerite da Excel nije na tom popisu programa.
Provjerite veličinu Excel datoteke
Često postoje retci i stupci kojima se pristupa ispod onih na vašim radnim listovima koji se zapravo koriste. Excel koristi memoriju u tim ćelijama - čak i ako su te ćelije prazne. Provjerite veličinu datoteke pritiskom na CTRL+SHIFT+END na tipkovnici da vidite gdje slijedi pokazivač vaše ćelije. Ako padne znatno ispod zadnje ćelije koju koristite, svakako izbrišite sve prazne retke i stupce iznad pokazivača na ćeliju, a zatim ponovno spremite datoteku - to će smanjiti veličinu datoteke Excel.
Drugi načini provjere memorije
Postoje i drugi načini oslobađanja memorije u Excelu. Dobra ideja je zatvoriti Excel ako ga ne koristite, a zatim ga kasnije otvoriti - to će osloboditi svu memoriju koju Excel pohranjuje jer nastoji pohraniti memoriju čak i kad radna knjiga nije otvorena! Uvijek provjerite je li vaša verzija sustava Office ažurirana provjerom ima li ažuriranja na vašem računalu i provjerite ima li dodataka VBA koji se možda koriste, ali ih ne koristite - možete ih deinstalirati kako biste oslobodili još više memorije.