В этом руководстве объясняется ошибка нехватки памяти VBA.
Ошибка VBA Out of Memory возникает, когда Excel использовал все ресурсы вашего компьютера при выполнении макроса и буквально исчерпывает память для продолжения вычислений или выполнения кода. Это могло произойти, когда у вас запущено много приложений и вы пытаетесь запустить большой макрос в Excel, или, возможно, когда вы создали вечный цикл в Excel по ошибке.
(Дополнительную информацию об ошибках VBA см. В нашем Руководстве по обработке ошибок)
Причины ошибки нехватки памяти
Ошибка нехватки памяти может возникнуть, если вы работаете с книгой, содержащей много листов и тысячи строк. Если мы создадим цикл, который работает с большим объемом данных, может возникнуть ошибка нехватки памяти. Это также может произойти, если мы работаем с несколькими объектами и устанавливаем каждый объект с помощью оператора SET, но затем не очищаем ссылки на объекты между процедурами или циклами.
Например, следующий цикл определенно может вызвать ошибку памяти, если у вас открыто несколько файлов с несколькими листами.
1234567891011121314 | Sub TestMemory ()Dim wb As WorkbookDim ws как рабочий листТусклый я как одиночныйДля каждого ББ в Application.WorkbooksДля каждого WS в wb.SheetsСделать до ActiveCell = "A1048576"ActiveCell = 1 + яя = я + 1ActiveCell.Offset (1, 0) .SelectПетляСледующий wsСледующий wbКонец подписки |
Предотвращение ошибки нехватки памяти
Объекты выпуска
Если мы работаем с циклами и объектами, нам нужно убедиться, что мы установили для объекта значение НИЧЕГО после того, как он был использован и больше не нужен - это освободит память.
Программирование на VBA | Генератор кода действительно работает для вас!
Убедитесь, что запущен только один экземпляр Excel
Если мы работаем с большими файлами и огромными объемами данных, убедитесь, что у вас не открыто несколько сеансов Excel - его нужно открыть только один раз. Чтобы проверить это, перейдите в диспетчер задач и посмотрите, сколько экземпляров Excel запущено.
Нажмите Ctrl + Alt + Delete на клавиатуре,
Нажмите на Диспетчер задач и убедитесь, что работает только один экземпляр Excel. На рисунке ниже показан один экземпляр с двумя окнами.
Мы также можем проверить в диспетчере задач, что нет экземпляров Excel, работающих в фоновом режиме (т.е. невидимых).
Прокрутите вниз в диспетчере задач, пока не увидите Фоновые процессы и убедитесь, что Excel нет в этом списке программ.
Проверьте размер вашего файла Excel
Часто строки и столбцы, к которым был получен доступ, располагаются ниже тех, которые используются на ваших листах. Excel использует память в этих ячейках, даже если эти ячейки пусты. Проверьте размер файла, нажав CTRL + SHIFT + END на клавиатуре, чтобы увидеть, где находится указатель вашей ячейки. Если он приземляется значительно ниже последней используемой ячейки, убедитесь, что вы удалили все пустые строки и столбцы над указателем ячейки, а затем повторно сохраните файл - это уменьшит размер вашего файла Excel.
Другие способы проверки памяти
Есть несколько других способов освободить память в Excel. Хорошая идея - закрыть Excel, если вы его не используете, а затем открыть его позже - это освободит всю память, которую хранит Excel, поскольку он имеет тенденцию хранить память, даже когда книга не открыта! Всегда проверяйте актуальность вашей версии Office, проверяя наличие обновлений на вашем компьютере и проверяя любые надстройки VBA, которые могут использоваться, но которые вы не используете - вы можете удалить их, чтобы освободить еще больше памяти.