Eroare VBA fără memorie

Acest tutorial va explica eroarea VBA Out of Memory.

Eroarea VBA Out of Memory apare atunci când Excel a folosit toate resursele aparatului dvs. în timp ce rulează o macro și literalmente rămâne fără memorie pentru a continua să calculeze sau să ruleze codul. Acest lucru se poate întâmpla atunci când aveți o mulțime de aplicații care rulează și încercați să rulați o macro mare în Excel sau poate când ați creat o buclă perpetuă în Excel din greșeală.

(Consultați Ghidul nostru de gestionare a erorilor pentru mai multe informații despre erorile VBA)

Cauze ale erorii de memorie

O eroare de memorie lipsă poate apărea dacă lucrați cu un registru de lucru care conține multe foi de lucru și mii de rânduri. Dacă creăm o buclă care funcționează cu un volum mare de date, ar putea apărea o eroare de memorie. Ar putea apărea, de asemenea, dacă lucrăm cu mai multe obiecte și setăm fiecare obiect cu o instrucțiune SET, dar nu ștergem referințele la obiecte între proceduri sau bucle.

De exemplu, următoarea buclă ar putea provoca cu siguranță o eroare de memorie dacă aveți mai multe fișiere deschise cu mai multe foi.

1234567891011121314 Sub TestMemory ()Dim wb Ca registru de lucruDim ws Ca foaie de lucruDim i SinglePentru fiecare wb din Application.WorkbooksPentru fiecare ws In wb.SheetsFă până la ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0). SelectațiBuclăUrmătorul wsUrmătorul wbSfârșitul Sub

Prevenirea unei erori fără memorie

Eliberați obiecte

Dacă lucrăm cu bucle și obiecte, trebuie să ne asigurăm că setăm obiectul la NIMIC odată ce a fost folosit și nu mai este necesar - aceasta va elibera memoria.

Programare VBA | Generatorul de coduri funcționează pentru dvs.!

Asigurați-vă că numai o singură instanță Excel rulează

Dacă lucrăm cu fișiere mari și cantități mari de date, verificați dacă nu aveți mai multe sesiuni de Excel deschise - trebuie să fie deschis doar o singură dată. O modalitate de a verifica acest lucru este să mergeți la Task Manager și să vedeți câte instanțe de Excel rulează.

presa Ctl + Alt + Ștergere pe tastatură,

Click pe Gestionar de sarcini și asigurați-vă că există o singură instanță de rulare Excel. În graficul de mai jos, există o singură instanță, cu 2 ferestre.

De asemenea, putem verifica în Managerul de activități dacă nu există nicio instanță de Excel care să ruleze în fundal (adică nu este vizibilă).

Derulați în jos în Task Manager până când vedeți Procese de fundal și asigurați-vă că Excel nu se află în lista respectivă de programe.

Verificați dimensiunea fișierului Excel

Adesea există rânduri și coloane care au fost accesate sub cele din foile de lucru care sunt de fapt utilizate. Excel folosește memoria în aceste celule - chiar dacă aceste celule sunt goale. Verificați dimensiunea fișierului apăsând CTRL + SHIFT + END de pe tastatură pentru a vedea unde aterizează indicatorul dvs. celular. Dacă aterizează mult sub ultima celulă pe care o utilizați, asigurați-vă că ștergeți toate rândurile și coloanele goale de deasupra indicatorului de celulă și apoi salvați din nou fișierul - aceasta va reduce dimensiunea fișierului Excel.

Alte modalități de a verifica memoria

Există diferite alte modalități de a elibera memoria în Excel. O idee bună este să închideți Excel dacă nu îl utilizați și apoi să îl deschideți mai târziu - aceasta va elibera orice memorie pe care o stochează Excel, deoarece tinde să stocheze memorie chiar și atunci când un registru de lucru nu este deschis! Asigurați-vă întotdeauna că versiunea dvs. de Office este actualizată, verificând Actualizări pe computerul dvs. și verificați eventualele suplimente VBA care ar putea fi utilizate, dar pe care nu le utilizați - le puteți dezinstala pentru a elibera și mai multă memorie.

wave wave wave wave wave