Грешка при изчерпване на паметта на VBA

Този урок ще обясни грешката VBA Out of Memory Error.

Грешката VBA Out of Memory възниква, когато Excel използва всички ресурси на вашата машина, докато изпълнява макрос и буквално изчерпва паметта, за да продължи да изчислява или изпълнява код. Това може да се случи, когато имате много изпълнени приложения и се опитате да стартирате голям макрос в Excel, или може би, когато сте създали вечен цикъл в Excel по грешка.

(Вижте нашето Ръководство за обработка на грешки за повече информация относно грешките на VBA)

Причини за грешка в паметта

Грешка при изчерпване на паметта може да възникне, ако човек работи с работна книга, която съдържа много работни листове и хиляди редове. Ако създадем цикъл, който работи с голям обем данни, може да възникне грешка при изчерпване на паметта. Това може да се случи и ако работим с множество обекти и задаваме всеки обект с оператор SET, но след това не изчистваме препратките към обектите между процедури или цикли.

Например следният цикъл определено може да причини грешка в паметта, ако имате отворени множество файлове с множество листове.

1234567891011121314 Sub TestMemory ()Dim wb Като работна книгаЗатъмнете като работен листDim i As SingleЗа всяка wb в Application.WorkbooksЗа всеки ws В wb.SheetsНаправете до ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0) .ИзберетеЦикълСледващата wsСледваща wbEnd Sub

Предотвратяване на грешка при изчерпване на паметта

Освобождаване на обекти

Ако работим с цикли и обекти, трябва да сме сигурни, че сме задали обекта на НИЩО, след като е бил използван и вече не е необходим - това ще освободи паметта.

VBA програмиране | Code Generator работи за вас!

Уверете се, че работи само един екземпляр на Excel

Ако работим с големи файлове и огромни количества данни, проверете дали нямате отворени няколко сесии на Excel - трябва да бъде отворен само веднъж. Начин да проверите това е да отидете в диспечера на задачите и да видите колко екземпляра на Excel се изпълняват.

Натиснете Ctl+Alt+Delete на клавиатурата,

Кликнете върху Диспечер на задачите и се уверете, че работи само един екземпляр на Excel. На графиката по -долу има един екземпляр с 2 прозореца.

Можем също така да проверим в диспечера на задачите, че няма екземпляр на Excel, работещ във фонов режим (т.е. не се вижда).

Превъртете надолу в диспечера на задачите, докато видите Фонови процеси и се уверете, че Excel не е в този списък с програми.

Проверете размера на вашия Excel файл

Често има редове и колони, които са били достъпни под тези в работните ви листове, които всъщност се използват. Excel използва памет в тези клетки - дори ако тези клетки са празни. Проверете размера на файла, като натиснете CTRL+SHIFT+END на клавиатурата, за да видите къде се приземява показалеца на клетката. Ако се окаже доста под последната клетка, която използвате, уверете се, че сте изтрили всички празни редове и колони над показалеца на клетката и след това запазете отново файла - това ще намали размера на вашия Excel файл.

Други начини за проверка на паметта

Има различни други начини за освобождаване на памет в Excel. Добра идея е да затворите Excel, ако не го използвате, и след това да го отворите по -късно - това ще освободи всяка памет, която Excel съхранява, тъй като има тенденция да съхранява памет, дори когато работната книга не е отворена! Винаги се уверявайте, че вашата версия на Office е актуална, като проверите за актуализации на вашия компютър и проверете за всички добавки VBA, които може да се използват, но че не използвате - можете да ги деинсталирате, за да освободите още повече памет.

wave wave wave wave wave