Този урок ще обясни грешката 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, които може да се използват, но че не използвате - можете да ги деинсталирате, за да освободите още повече памет.