W tym samouczku wyjaśniono błąd braku pamięci VBA.
Błąd braku pamięci VBA występuje, gdy program Excel wykorzystał wszystkie zasoby komputera podczas uruchamiania makra i dosłownie zabrakło pamięci do wykonywania obliczeń lub uruchamiania kodu. Może się tak zdarzyć, gdy masz uruchomionych wiele aplikacji i próbujesz uruchomić duże makro w programie Excel, lub gdy błędnie utworzyłeś pętlę wieczystą w programie Excel.
(Zobacz nasz Przewodnik obsługi błędów, aby uzyskać więcej informacji na temat błędów VBA)
Przyczyny błędu braku pamięci
Podczas pracy ze skoroszytem zawierającym wiele arkuszy i tysiące wierszy może wystąpić błąd braku pamięci. Jeśli stworzymy pętlę, która działa z dużą ilością danych, może wystąpić błąd braku pamięci. Może się to również zdarzyć, jeśli pracujemy z wieloma obiektami i ustawiamy każdy obiekt za pomocą instrukcji SET, ale potem nie usuwamy odwołań do obiektów między procedurami lub pętlami.
Na przykład następująca pętla może z pewnością spowodować błąd pamięci, jeśli masz otwartych wiele plików z wieloma arkuszami.
1234567891011121314 | Pamięć podrzędna()Dim wb jako skoroszytDim ws As WorksheetPrzyciemnij jako singielDla każdego wb In Application.WorkbooksDla każdego ws In wb.SheetsCzy dopóki ActiveCell = "A1048576"AktywnaKomórka = 1 + ija = ja + 1ActiveCell.Offset(1, 0).WybierzPętlaNastępnyNastępny wbNapis końcowy |
Zapobieganie błędom braku pamięci
Zwolnij obiekty
Jeśli pracujemy z pętlami i obiektami, musimy upewnić się, że ustawiliśmy obiekt na NIC, gdy był już używany i nie jest już potrzebny - zwolni to pamięć.
Programowanie VBA | Generator kodu działa dla Ciebie!
Upewnij się, że działa tylko jedno wystąpienie programu Excel
Jeśli pracujemy z dużymi plikami i ogromnymi ilościami danych, sprawdź, czy nie masz otwartych wielu sesji Excela - wystarczy otworzyć go raz. Sposobem na sprawdzenie tego jest przejście do Menedżera zadań i sprawdzenie, ile wystąpień programu Excel jest uruchomionych.
naciskać Ctl+Alt+Usuń na klawiaturze,
Kliknij Menadżer zadań i upewnij się, że działa tylko jedno wystąpienie programu Excel. Na poniższej grafice jest jedna instancja z 2 oknami.
Możemy również sprawdzić w Menedżerze zadań, że w tle nie ma uruchomionego programu Excel (czyli nie jest widoczne).
Przewiń w dół w Menedżerze zadań, aż zobaczysz Procesy w tle i upewnij się, że programu Excel nie ma na tej liście programów.
Sprawdź rozmiar swojego pliku Excel
Często istnieją wiersze i kolumny, do których uzyskano dostęp pod tymi w arkuszach, które są faktycznie używane. Program Excel używa pamięci w tych komórkach - nawet jeśli te komórki są puste. Sprawdź rozmiar pliku, naciskając CTRL+SHIFT+END na klawiaturze, aby zobaczyć, gdzie znajduje się wskaźnik komórki. Jeśli wyląduje znacznie poniżej ostatniej używanej komórki, upewnij się, że usuniesz wszystkie puste wiersze i kolumny powyżej wskaźnika komórki, a następnie ponownie zapisz plik - zmniejszy to rozmiar pliku Excel.
Inne sposoby sprawdzania pamięci
Istnieje wiele innych sposobów na zwolnienie pamięci w programie Excel. Dobrym pomysłem jest zamknięcie programu Excel, jeśli go nie używasz, a następnie otwarcie go później - zwolni to całą pamięć przechowywaną przez program Excel, ponieważ ma tendencję do przechowywania pamięci nawet wtedy, gdy skoroszyt nie jest otwarty! Zawsze upewnij się, że Twoja wersja pakietu Office jest aktualna, sprawdzając dostępność aktualizacji na komputerze i sprawdzając, czy nie ma dodatków VBA, które mogą być używane, ale których nie używasz - możesz je odinstalować, aby zwolnić jeszcze więcej pamięci.