Indeks VBA poza zakresem

Indeks dolny VBA programu Excel poza zakresem

Indeks dolny poza zakresem to błąd, który napotykamy w VBA, gdy próbujemy odwołać się do czegoś lub zmiennej, która nie istnieje w kodzie, na przykład załóżmy, że nie mamy zmiennej o nazwie x, ale używamy funkcji msgbox na x my wystąpi błąd poza zakresem indeksu dolnego.

Błąd poza zakresem indeksu VBA, ponieważ obiekt, do którego próbujemy uzyskać dostęp, nie istnieje. Jest to typ błędu w kodowaniu VBA, a to jest „Run Time Error 9”. Ważne jest, aby zrozumieć koncepcje pisania wydajnego kodu, a jeszcze ważniejsze jest zrozumienie błędu kodu VBA w celu wydajnego debugowania kodu.

Jeśli twój błąd kodowania i nie wiesz, co to za błąd, to kiedy cię nie ma.

Lekarz nie może podać leku swojemu pacjentowi, nie wiedząc, na czym polega choroba. Z pewnością lekarze i pacjenci wiedzą, że istnieje choroba (błąd), ale ważne jest, aby zrozumieć chorobę (błąd), niż podawać jej lekarstwo. Jeśli doskonale zrozumiesz błąd, znacznie łatwiej będzie znaleźć rozwiązanie.

Podobnie w tym artykule zobaczymy jeden z ważnych błędów, które zwykle napotykamy, tj. Błąd „Indeks poza zakresem” w Excel VBA.

Co to jest błąd poza zakresem indeksu w programie Excel VBA?

Na przykład, jeśli odwołujesz się do arkusza, którego nie ma w skoroszycie, otrzymujemy błąd wykonania 9: „Indeks poza zakresem”.

Jeśli klikniesz przycisk Zakończ, zakończy się podprocedura, jeśli klikniesz debugowanie, przeniesie Cię do linii kodu, w której napotkał błąd, a pomoc przeniesie Cię do strony internetowej Microsoft.

Dlaczego pojawia się błąd poza zakresem indeksu?

Jak powiedziałem jako lekarz, ważne jest, aby znaleźć zmarłego, zanim zaczniesz myśleć o leku. Błąd poza zakresem indeksu VBA pojawia się, gdy wiersz kodu nie odczytuje wprowadzonego obiektu.

Na przykład spójrz na poniższy obrazek, mam trzy arkusze nazwane jako Arkusz1, Arkusz2, Arkusz3.

Teraz w kodzie napisałem kod, aby wybrać arkusz „Sprzedaż”.

Kod:

 Sub Macro2 () Sheets („Sales”). Wybierz End Sub 

Jeśli uruchomię ten kod za pomocą klawisza F5 lub ręcznie, otrzymam błąd czasu wykonania 9: „Indeks poza zakresem”.

Dzieje się tak, ponieważ próbowałem uzyskać dostęp do obiektu arkusza „Sprzedaż”, który nie istnieje w skoroszycie. To jest błąd czasu wykonywania, ponieważ ten błąd wystąpił podczas wykonywania kodu.

Innym częstym błędem indeksu dolnego, który otrzymujemy, jest odniesienie do skoroszytu, którego nie ma. Na przykład spójrz na poniższy kod.

Kod:

 Sub Macro1 () Dim Wb As Workbook Set Wb = Workbooks ("Salary Sheet.xlsx") End Sub 

Powyższy kod mówi, że zmienna WB powinna być równa skoroszytowi „Arkusz wynagrodzeń.xlsx”. Obecnie ten skoroszyt nie jest otwarty na moim komputerze. Jeśli uruchomię ten kod ręcznie lub za pomocą klawisza F5, otrzymam błąd wykonania 9: „Indeks dolny poza zakresem”.

Wynika to ze skoroszytu, o którym mówię, który albo nie jest obecnie otwarty, albo w ogóle nie istnieje.

Błąd indeksu VBA w tablicach

Kiedy deklarujesz tablicę jako tablicę dynamiczną i jeśli nie używasz słowa DIM lub REDIM w VBA do zdefiniowania długości tablicy, zwykle otrzymujemy błąd VBA Subscript poza zakresem. Na przykład spójrz na poniższy kod.

Kod:

 Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub 

W powyższym zdeklarowałem zmienną jako tablicę, ale nie przypisałem punktu początkowego i końcowego, a raczej od razu przypisałem pierwszej tablicy wartość 25.

Jeśli uruchomię ten kod za pomocą klawisza F5 lub ręcznie, otrzymamy błąd wykonania 9: „Indeks dolny poza zakresem”.

Aby rozwiązać ten problem, muszę przypisać długość tablicy za pomocą słowa Redim.

Kod:

 Sub Macro3 () Dim MyArray () As Long ReDim MyArray (1 do 5) MyArray (1) = 25 End Sub 

Ten kod nie daje żadnych błędów.

Jak wyświetlić błędy na końcu kodu VBA?

Jeśli nie chcesz widzieć błędu, gdy kod jest uruchomiony i działa, ale potrzebujesz listy błędów na końcu, musisz użyć modułu obsługi błędów „On Error Resume”. Spójrz na poniższy kod.

Kod:

 Sub Macro1 () Dim Wb As Workbook On Error Resume Next Set Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Description End Sub 

Jak widzieliśmy, ten kod spowoduje wyświetlenie błędu czasu wykonania 9: „Indeks dolny poza zakresem w Excel VBA . Ale muszę użyć programu obsługi błędów On Error Resume Next w VBA podczas wykonywania kodu nie otrzymamy żadnych komunikatów o błędach, a w końcowym oknie komunikatu wyświetlany jest taki opis błędu.

Możesz pobrać szablon poza zakresem indeksu VBA w Excelu: - Szablon indeksu dolnego VBA poza zakresem