Excel VBA apakšindekss ir ārpus diapazona
Apakšraksts ārpus diapazona ir kļūda, ar kuru mēs saskaramies VBA, mēģinot atsaukties uz kaut ko vai mainīgo, kas kodā nepastāv, piemēram, pieņemsim, ka mums nav mainīgā ar nosaukumu x, bet mēs izmantojam msgbox funkciju x mēs saskarsies ar apakšvirsraksta kļūdu ārpus diapazona.
Kļūda VBA abonenta ārpus diapazona dēļ rodas objekts, kuram mēģinām piekļūt. Šis ir kļūdas veids VBA kodēšanā, un tā ir “Run Time Error 9”. Ir svarīgi izprast jēdzienus, lai rakstītu efektīvu kodu, un vēl svarīgāk ir saprast VBA koda kļūdu, lai efektīvi atkļūdotu kodu.
Ja kodēšanas kļūda un jūs nezināt, kāda ir šī kļūda, kad esat prom.
Ārsts nevar dot pacientam zāles, nezinot, kāda ir šī slimība. Protams, gan ārsti, gan pacienti zina, ka ir kāda slimība (kļūda), taču ir svarīgi saprast slimību (kļūdu), nevis dot tai zāles. Ja jūs lieliski saprotat kļūdu, tad ir daudz vieglāk atrast risinājumu.
Uz līdzīgas piezīmes šajā rakstā mēs redzēsim vienu no svarīgākajām kļūdām, ar kurām parasti saskaramies ar regularitāti, ti, Excel VBA kļūda “Subscript Out of Range”.

Kas ir abonementa ārpus diapazona kļūda programmā Excel VBA?
Piemēram, ja jūs atsaucaties uz lapu, kuras darbgrāmatā nav, tad tiek parādīta 9. izpildes laika kļūda: “Apakšraksts ārpus diapazona”.

Ja noklikšķināsit uz pogas Beigt, tā beigs apakšprocedūru, ja noklikšķināsit uz atkļūdošana, tas novirzīs jūs uz koda rindiņu, kur tajā radās kļūda, un palīdzība novirzīs jūs uz Microsoft vietnes vietni.
Kāpēc rodas kļūda parindeksa ārpus diapazona?
Kā es kā ārsts teicu, pirms domāt par zālēm ir svarīgi atrast mirušo. Kļūda VBA abonenta ārpus diapazona rodas, ja koda rindiņa nelasa ievadīto objektu.
Piemēram, apskatiet zemāk redzamo attēlu. Man ir trīs lapas ar nosaukumu Sheet1, Sheet2, Sheet3.

Tagad kodā esmu uzrakstījis kodu, lai atlasītu lapu “Pārdošana”.
Kods:
Apakšmakro2 () lapas ("Pārdošana"). Atlasiet Beigu beigas

Ja es palaidīšu šo kodu, izmantojot F5 taustiņu, vai manuāli, man tiks parādīta 9. izpildes laika kļūda: “Subscript out of Range”.

Tas ir tāpēc, ka es mēģināju piekļūt darblapas objektam “Sales”, kas darbgrāmatā nepastāv. Šī ir izpildes laika kļūda, jo šī kļūda radās, palaižot kodu.
Vēl viena izplatīta apakšdokumenta kļūda, kad mēs atsaucamies uz darbgrāmatu, kuras tur nav. Piemēram, apskatiet zemāk redzamo kodu.
Kods:
1. makro1 () Dim Wb kā darbgrāmatu kopa Wb = darbgrāmatas ("Algu lapa.xlsx") Beigu apakšdaļa

Iepriekš minētais kods saka, ka mainīgajam WB jābūt vienādam ar darbgrāmatu “Algu lapa.xlsx”. Pašlaik šī darbgrāmata manā datorā netiek atvērta. Ja es palaidīšu šo kodu manuāli vai caur F5 taustiņu, saņemšu 9. izpildes laika kļūdu: “Subscript out of Range”.

Tas ir saistīts ar darbgrāmatu, uz kuru es atsaucos, kas pašlaik nav atvērta vai tās vispār nav.
VBA apakšraksta kļūda masīvos
Paziņojot masīvu kā dinamisko masīvu un ja VBA neizmantojat vārdu DIM vai REDIM, lai definētu masīva garumu, mēs parasti saņemam kļūdas diapazonā VBA Subscript. Piemēram, apskatiet zemāk redzamo kodu.
Kods:
Sub Macro3 () Dim MyArray () Tikpat MyArray (1) = 25 End Sub

Iepriekšminētajā es esmu pasludinājis mainīgo kā masīvu, bet neesmu piešķīris sākuma un beigu punktu; drīzāk es pirmajam masīvam esmu piešķīris vērtību 25.
Ja es palaidīšu šo kodu, izmantojot F5 taustiņu, vai manuāli, tiks parādīta 9. izpildes laika kļūda: “Subscript out of Range”.

Lai novērstu šo problēmu, man jāpiešķir masīva garums, izmantojot vārdu Redim.
Kods:
Sub Macro3 () Dim MyArray () Tik ilgi ReDim MyArray (1 līdz 5) MyArray (1) = 25 End Sub

Šis kods nedod nekādas kļūdas.
Kā parādīt kļūdas VBA koda beigās?
Ja jūs nevēlaties redzēt kļūdu, kamēr kods darbojas un darbojas, bet beigās ir nepieciešams kļūdu saraksts, jums jāizmanto kļūdu apstrādātājs “On Error Resume”. Apskatiet zemāk esošo kodu.
Kods:
Sub makro1 () Dim Wb kā darbgrāmata par kļūdu Atsākt nākamo komplektu Wb = darbgrāmatas ("Algu lapa.xlsx") MsgBox kļūdas apraksts Apraksts Beigas apakšdaļa

Kā mēs redzējām, šis kods izmet izpildes laika kļūdu 9: “Abonements ārpus diapazona programmā Excel VBA . Bet, palaižot kodu, man jāizmanto kļūdu apstrādātājs On Error Resume Next VBA. Mēs nesaņemsim kļūdas ziņojumus. Drīzāk beigās ziņojuma lodziņš man parāda šādu kļūdas aprakstu.

Šeit varat lejupielādēt Excel VBA apakšraksta ārpus diapazona veidni: - VBA apakšraksta ārpus diapazona veidne