Spis treści
W tym artykule pokażemy Ci powody, dla których " Indeks dolny poza zakresem " błąd w Excelu VBA i jak je rozwiązać.
Pobierz szablon praktyki
Darmowy szablon Excela z praktyką można pobrać stąd.
Błąd zapisu poza zakresem w VBA.xlsm
Co to jest Subscript Out of Range Error w VBA?
VBA indeks dolny poza zakresem Błąd pojawia się, gdy próbujemy uzyskać dostęp do nieistniejącego członka lub nieistniejącej kolekcji tablic w Excelu. Jest to błąd typu " Błąd w czasie pracy 9 " typ błędu w VBA kodowanie w Excelu.
Błąd zazwyczaj wygląda tak,
5 Przyczyny i rozwiązania błędu indeksów dolnych poza zakresem w VBA
W tej części omówionych zostanie 5 najczęstszych przyczyn występowania. Indeks dolny poza zakresem błąd i jakie są jego rozwiązania.
1. błąd indeksów poza zakresem w VBA dla nieistniejącego skoroszytu
Gdy spróbujesz uzyskać dostęp do skoroszytu programu Excel, który nie jest otwarty, otrzymasz komunikat " Indeks dolny poza zakresem " błąd.
Jeśli spróbujemy Uruchom pokazany powyżej kod, otrzymamy błąd, ponieważ nie istnieje żaden skoroszyt Excela o nazwie " Sprzedaż ", który jest obecnie otwarty.
Rozwiązanie
Aby rozwiązać ten błąd, najpierw otwórz skoroszyt programu Excel, do którego chcesz uzyskać dostęp, a następnie Uruchom makro.
2. błąd indeksów poza zakresem w VBA dla nieistniejącego arkusza
Gdy próbujesz uzyskać dostęp do arkusza, który nie istnieje w skoroszycie programu Excel, otrzymasz również komunikat " Indeks dolny poza zakresem " błąd w VBA .
Jeśli spróbujemy uruchomić pokazany powyżej kod, otrzymamy błąd, ponieważ nie ma " Plansza2 " arkusz roboczy dostępny w naszym zeszycie.
Rozwiązanie
Aby rozwiązać ten błąd, musisz mieć arkusz Excela, do którego chcesz uzyskać dostęp w uruchomionym skoroszycie, a następnie Uruchom makro.
3. błąd indeksów poza zakresem w VBA dla niezdefiniowanych elementów tablicy
Jeśli nie określisz długości dynamicznej tablicy słowem DIM lub REDIM w Excelu VBA , to dostaniesz " Indeks dolny poza zakresem " błąd.
W powyższym kodzie zadeklarowaliśmy tablicę w wymiarze od 5 do 10, ale odwołaliśmy się do indeksu 3, który jest niższy od 5.
Rozwiązanie
Aby to rozwiązać, zadeklaruj indeks w między wymiarami Array.
Ten fragment kodu działa doskonale, ponieważ tutaj odwołaliśmy się do indeksu 5, który znajduje się wewnątrz zakresu od 5 do 10.
4) Błąd indeksów poza zakresem w VBA dla nieprawidłowej kolekcji / tablicy
Gdy indeks jest większy lub mniejszy od zakresu możliwych indeksów, wtedy Indeks dolny poza zakresem pojawi się błąd.
Spójrz na powyższy przykład, zadeklarowaliśmy zmienną jako Array, ale zamiast przypisać punkt początkowy i końcowy, bezpośrednio przypisaliśmy pierwszą tablicę z wartością 20.
Rozwiązanie
Aby naprawić ten problem, musimy przypisać długość tablicy z punktem początkowym i końcowym.
Ten kod nie daje żadnego błędu, ponieważ teraz zadeklarowaliśmy Array z punktem początkowym 1 i punktem końcowym 5.
5) Błąd indeksów poza zakresem w VBA dla skryptów skróconych
Jeśli użyjesz skrótu z indeksu i będzie on odnosił się do nieprawidłowego elementu, to otrzymasz " Indeks dolny poza zakresem " błąd w Excelu VBA Na przykład, [A2] jest skrótem od ActiveSheet.Range(A2) .
Rozwiązanie
Aby to naprawić, musisz użyć ważnego nazwa klucza oraz indeks dla kolekcji. Zamiast pisać ActiveSheet.Range(A2) , można po prostu napisać [ A2 ].
Korzyści z Excel Subscript Out of Range Error w VBA
- VBA indeks dolny poza zakresem błąd lub " Błąd czasu pracy 9 " jest naprawdę przydatny do określenia pozycji błędu, w której wystąpił w VBA kod.
- Ten błąd pomaga użytkownikom znaleźć typ błędu, aby mogli sprawdzić i znaleźć rozwiązania zgodnie z kodem błędu.
Rzeczy do zapamiętania
- Ponieważ błąd ten kompiluje każdy krok kodu, aby nakierować nas dokładnie na to, dla której części kodu faktycznie musimy podjąć działania, więc lepiej jest kompilować każdą linię kodu po kolei naciskając F8 klucz, jeśli masz ogromną linię kodu.
Wniosek
Ten artykuł pokazał Ci przyczyny i rozwiązania Excela Indeks dolny poza zakresem błąd w VBA. Mam nadzieję, że ten artykuł był dla Ciebie bardzo korzystny. Zapraszam do zadawania wszelkich pytań związanych z tematem.