Овај водич ће објаснити ВБА грешку због недостатка меморије.
До грешке ВБА Нема меморије долази када је Екцел искористио све ресурсе ваше машине током извођења макроа и дословно му је понестало меморије за наставак израчунавања или покретања кода. То би се могло догодити када имате пуно покренутих апликација и покушате покренути велики макро у Екцелу, или можда ако сте грешком створили трајну петљу у Екцелу.
(За више информација о ВБА грешкама погледајте наш Водич за руковање грешкама)
Узроци грешке због недостатка меморије
До грешке при недостатку меморије може доћи ако радите са радном свеском која садржи много радних листова и хиљаде редова. Ако створимо петљу која ради са великом количином података, може доћи до грешке у недостатку меморије. То се такође може догодити ако радимо са више објеката и сваки објекат поставимо помоћу израза СЕТ, али тада не бришемо референце на објекте између процедура или петљи.
На пример, следећа петља би дефинитивно могла да изазове грешку у меморији ако имате више датотека отворених са више листова.
1234567891011121314 | Суб ТестМемори ()Дим вб Као радна свескаДим вс Ас ВорксхеетДим и Ас СинглеЗа сваку вб Ин Апплицатион.ВоркбооксЗа сваки вс У вб.СхеетсУради до АцтивеЦелл = "А1048576"АцтивеЦелл = 1 + ии = и + 1АцтивеЦелл.Оффсет (1, 0) .ОдаберитеЛоопНект всНект вбЕнд Суб |
Спречавање грешке због недостатка меморије
Релеасе Објецтс
Ако радимо са петљама и објектима, морамо бити сигурни да смо поставили Објекат на НИШТА када се користи и више му није потребан - ово ће ослободити меморију.
ВБА програмирање | Генератор кода ради за вас!
Уверите се да је покренута само једна инстанца програма Екцел
Ако радимо са великим датотекама и огромним количинама података, проверите да немате више отворених сесија програма Екцел - потребно је да га отворите само једном. Начин да то проверите је да одете у Управитељ задатака и видите колико инстанци програма Екцел ради.
Притисните Цтл+Алт+Делете на тастатури,
Кликните на Управљач задацима и уверите се да постоји само једна инстанца програма Екцел. На доњој слици постоји једна инстанца са 2 прозора.
Такође можемо да проверимо у Управитељу задатака да у позадини не постоји инстанца програма Екцел (тј. Није видљива).
Померајте се надоле у Управитељу задатака док не видите Позадински процеси и уверите се да Екцел није на тој листи програма.
Проверите величину Екцел датотеке
Често постоје редови и колоне којима се приступа испод оних на вашим радним листовима који се заправо користе. Екцел користи меморију у овим ћелијама - чак и ако су те ћелије празне. Проверите величину датотеке притиском на ЦТРЛ+СХИФТ+ЕНД на тастатури да видите где се налази показивач ћелије. Ако падне знатно испод последње ћелије коју користите, обавезно избришите све празне редове и колоне изнад показивача на ћелију, а затим поново сачувајте датотеку - то ће смањити величину ваше Екцел датотеке.
Други начини провере меморије
Постоје различити други начини за ослобађање меморије у програму Екцел. Добра идеја је да затворите Екцел ако га не користите, а затим га касније отворите - ово ће ослободити сву меморију коју Екцел складишти јер тежи да складишти меморију чак и када радна свеска није отворена! Увек се уверите да је ваша верзија система Оффице ажурирана тако што ћете проверити да ли постоје ажурирања на рачунару и да ли постоје додаци ВБА који се можда користе, али које не користите - можете их деинсталирати да бисте ослободили још више меморије.