Tento tutoriál vysvetlí chybu pamäte VBA bez pamäte.
K chybe VBA Out of Memory dochádza, keď Excel použil všetky prostriedky vášho počítača na spustenie makra a doslova sa mu minula pamäť na výpočet alebo spustenie kódu. K tomu môže dôjsť, keď máte spustených veľa aplikácií a pokúšate sa spustiť veľké makro v programe Excel, alebo ak ste omylom vytvorili večnú slučku v programe Excel.
(Ďalšie informácie o chybách VBA nájdete v našej príručke na spracovanie chýb)
Príčiny nedostatku pamäte
Chyba nedostatku pamäte sa môže vyskytnúť, ak pracujete so zošitom, ktorý obsahuje veľa pracovných hárkov a tisíce riadkov. Ak vytvoríme slučku, ktorá pracuje s veľkým objemom údajov, môže dôjsť k chybe v nedostatku pamäte. Mohlo by to nastať aj vtedy, ak pracujeme s viacerými objektmi a nastavíme každý objekt pomocou príkazu SET, ale potom nevymažeme odkazy na objekty medzi procedúrami alebo slučkami.
Nasledujúca slučka môže napríklad určite spôsobiť chybu pamäte, ak máte otvorených viac súborov s viacerými listami.
1234567891011121314 | Pod testová pamäť ()Dim wb ako zošitDim ws As worksheetDim i As SinglePre každý wb v aplikácii. Pracovné zošityPre každý ws v wb. ListyDo Do ActiveCell = "A1048576"ActiveCell = 1 + ii = i + 1ActiveCell.Offset (1, 0). VyberteSlučkaĎalšie wsDalsie wbKoniec pod |
Predchádzanie chybe nedostatku pamäte
Uvoľnite objekty
Ak pracujeme so slučkami a objektmi, musíme sa uistiť, že sme Objekt nastavili na NIČ, keď bol použitý a už nie je potrebný - uvoľní sa tým pamäť.
Programovanie VBA | Generátor kódu pracuje za vás!
Uistite sa, že je spustená iba jedna inštancia programu Excel
Ak pracujeme s veľkými súbormi a veľkým objemom údajov, skontrolujte, či nemáte otvorených viac relácií programu Excel - stačí ho otvoriť iba raz. Spôsob, ako to skontrolovať, je prejsť do Správcu úloh a zistiť, koľko inštancií programu Excel je spustených.
Stlačte Ctl+Alt+Odstrániť na klávesnici,
Kliknite na Správca úloh a uistite sa, že je spustená iba jedna inštancia programu Excel. Na obrázku nižšie je jeden prípad s 2 oknami.
V Správcovi úloh môžeme tiež skontrolovať, či na pozadí nie je spustená žiadna inštancia programu Excel (tj. Nie je viditeľná).
Posúvajte sa nadol v Správcovi úloh, kým sa nezobrazí Procesy na pozadí a uistite sa, že Excel nie je v tomto zozname programov.
Skontrolujte veľkosť súboru programu Excel
Často sa používajú riadky a stĺpce, ktoré sú nižšie ako stĺpce vo vašich pracovných hárkoch. Excel v týchto bunkách používa pamäť - aj keď sú tieto bunky prázdne. Veľkosť súboru skontrolujte stlačením CTRL+SHIFT+END na klávesnici, aby ste videli, kde vám pristane ukazovateľ bunky. Ak sa dostane výrazne pod poslednú bunku, ktorú používate, odstráňte všetky prázdne riadky a stĺpce nad ukazovateľom bunky a potom súbor znova uložte - zmenší sa tým veľkosť súboru programu Excel.
Ďalšie spôsoby kontroly pamäte
V programe Excel existujú rôzne ďalšie spôsoby uvoľnenia pamäte. Je vhodné zatvoriť program Excel, ak ho nepoužívate, a potom ho otvoriť neskôr - tým sa uvoľní všetka pamäť, ktorú Excel ukladá, pretože má tendenciu ukladať pamäť, aj keď nie je otvorený zošit! Vždy sa uistite, že je vaša verzia balíka Office aktuálna, a to tak, že v počítači vyhľadáte aktualizácie a skontrolujete, či sa nepoužívajú doplnky VBA, ktoré však nepoužívate - môžete ich odinštalovať a uvoľniť tak ešte viac pamäte.