Ši pamoka paaiškins VBA atminties klaidą.
VBA trūksta atminties klaida atsiranda, kai „Excel“, naudodama makrokomandą, išnaudojo visus jūsų įrenginio išteklius ir tiesiogine prasme baigėsi atmintimi, kad galėtų toliau skaičiuoti ar paleisti kodą. Tai gali atsitikti, kai paleisite daug programų ir bandysite paleisti didelę makrokomandą programoje „Excel“ arba galbūt sukūrėte amžiną ciklą „Excel“ per klaidą.
(Daugiau informacijos apie VBA klaidas rasite mūsų klaidų tvarkymo vadove)
Trūksta atminties klaidos priežastys
Trūksta atminties klaidos, jei dirbate su darbaknyge, kurioje yra daug darbalapių ir tūkstančiai eilučių. Jei sukursime ciklą, kuris veikia su dideliu duomenų kiekiu, gali atsirasti atminties trūkumo klaida. Taip pat gali atsitikti, jei dirbame su keliais objektais ir kiekvieną objektą nustatome su SET sakiniu, bet tada neišvalome nuorodų į objektus tarp procedūrų ar kilpų.
Pvz., Toliau nurodyta kilpa tikrai gali sukelti atminties klaidą, jei atidarote kelis failus su keliais lapais.
1234567891011121314 | Sub TestMemory ()Dim wb Kaip darbo knygaDim ws kaip darbalapisDim i As SingleUž kiekvieną wb programoje. Darbo knygosKiekvienam ws In wb.SheetsDaryti iki „ActiveCell“ = "A1048576"„ActiveCell“ = 1 + ii = i + 1„ActiveCell. Offset“ (1, 0). PasirinkiteKilpaKitas wsKitas wbPabaiga Sub |
Trūksta atminties klaidos
Išleisti objektus
Jei dirbame su kilpomis ir objektais, turime įsitikinti, kad nustačius objektą NIEKAS, kai jis bus naudojamas ir nebereikalingas - tai atlaisvins atmintį.
VBA programavimas | Kodo generatorius jums tinka!
Įsitikinkite, kad veikia tik vienas „Excel“ egzempliorius
Jei dirbame su dideliais failais ir dideliais duomenų kiekiais, patikrinkite, ar nėra atidarytų kelių „Excel“ seansų - jis turi būti atidarytas tik vieną kartą. Vienas iš būdų tai patikrinti yra eiti į užduočių tvarkyklę ir pamatyti, kiek „Excel“ egzempliorių veikia.
Paspauskite Ctl+Alt+Delete ant klaviatūros,
Spustelėkite Užduočių tvarkyklė ir įsitikinkite, kad veikia tik vienas „Excel“ egzempliorius. Žemiau esančioje grafikoje yra vienas pavyzdys su 2 langais.
Taip pat galime patikrinti užduočių tvarkytuvėje, ar fone neveikia „Excel“ egzempliorius (ty nematomas).
Slinkite žemyn užduočių tvarkytuvėje, kol pamatysite Fono procesai ir įsitikinkite, kad „Excel“ nėra tame programų sąraše.
Patikrinkite „Excel“ failo dydį
Dažnai yra eilučių ir stulpelių, kurie buvo pasiekti po darbalapiuose esančiais, kurie iš tikrųjų naudojami. „Excel“ naudoja atmintį šiuose langeliuose - net jei tos ląstelės yra tuščios. Patikrinkite failo dydį paspausdami CTRL+SHIFT+END klaviatūroje, kad pamatytumėte, kur nusileidžia langelio žymeklis. Jei jis yra gerokai žemiau paskutinio jūsų naudojamo langelio, būtinai ištrinkite visas tuščias eilutes ir stulpelius virš langelio žymeklio ir iš naujo išsaugokite failą - tai sumažins jūsų „Excel“ failo dydį.
Kiti būdai patikrinti atmintį
Yra ir kitų būdų, kaip atlaisvinti atmintį „Excel“. Gera idėja yra uždaryti „Excel“, jei jos nenaudojate, ir vėliau ją atidaryti - tai atlaisvins bet kokią „Excel“ saugomą atmintį, nes ji linkusi kaupti atmintį net ir tada, kai darbo knyga nėra atidaryta! Visada įsitikinkite, kad jūsų „Office“ versija yra atnaujinta, kompiuteryje ieškodami naujinimų ir patikrinkite, ar nėra VBA priedų, kurie gali būti naudojami, bet kurių nenaudojate - galite juos pašalinti, kad atlaisvintumėte dar daugiau atminties.