Помилка VBA через нестачу пам’яті

У цьому підручнику пояснюється помилка VBA Out of Memory Error.

Помилка вичерпання пам'яті VBA виникає, коли Excel використав усі ресурси вашої машини під час виконання макросу і буквально закінчується пам'ять для продовження обчислення або запуску коду. Це може статися, коли у вас працює багато програм і намагаєтесь запустити великий макрос в Excel, або, можливо, коли ви помилково створили вічний цикл в Excel.

(Докладніше про помилки VBA див. У нашому Посібнику з обробки помилок)

Причини помилки нестачі пам’яті

Помилка нестачі пам'яті може статися, якщо людина працює з книгою, яка містить багато аркушів і тисячі рядків. Якщо ми створимо цикл, який працює з великим об’ємом даних, може статися помилка нестачі пам’яті. Це також може статися, якщо ми працюємо з кількома об'єктами і встановлюємо кожен об'єкт за допомогою оператора SET, але потім не очищаємо посилання на об'єкти між процедурами або циклами.

Наприклад, наступний цикл, безперечно, може спричинити помилку пам’яті, якщо у вас відкрито кілька файлів із декількома аркушами.

1234567891011121314 Sub TestMemory ()Dim wb Як робочий зошитЗатемнити як робочий аркушDim i As SingleДля кожного веб -сайту в програмі. Робочі книгиДля кожного ws У wb. ТаблиціРобити до ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0) .ВиберітьПетляНаступний wsНаступна вбEnd Sub

Запобігання помилці нестачі пам’яті

Випуск об'єктів

Якщо ми працюємо з циклами та об’єктами, нам потрібно переконатися, що ми встановили об’єкт на НІЧОГО після того, як він був використаний і він більше не потрібен - це звільнить пам’ять.

Програмування VBA | Генератор коду працює для вас!

Переконайтеся, що працює лише один екземпляр 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