VBA apakšindekss ir ārpus diapazona (izpildes laika kļūda '9') Kāpēc rodas šī kļūda?
Excel VBA apakšindekss ir ārpus diapazona
Apakšindekss ārpus diapazona ir kļūda, ar kuru sastopamies VBA, mēģinot atsaukties uz kaut ko vai mainīgo, kura 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 saprast jēdzienus, lai rakstītu efektīvu kodu, un vēl svarīgāk ir izprast 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. Pārliecināts, ka ārsti un pacienti abi zina, ka ir slimība (kļūda), taču ir svarīgi saprast slimību (kļūdu), nevis dot zāles. Ja jūs lieliski saprotat kļūdu, tad ir daudz vieglāk atrast risinājumu.
Par līdzīgu piezīmi šajā rakstā mēs redzēsim vienu no svarīgākajām kļūdām, ar kurām mēs parasti sastopamies, piemēram, kļūdu “Subscript Out of Range” programmā Excel VBA.
Kas ir abonementa ārpus diapazona kļūda programmā Excel VBA?
Piemēram, ja atsaucaties uz darbgrāmatu, kuras tur nav darblapas, tiek parādīta 9. izpildes laika kļūda: “Subscript out of Range”.
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ā radās kļūda, un palīdzība novirzīs jūs uz Microsoft vietnes lapu.
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.
Lai skatītu piemēru zemāk redzamajam attēlam, 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 Beigt apakškopu
Ja es palaidīšu šo kodu, izmantojot F5 taustiņu vai manuāli, es saņemšu izpildes laika kļūdu 9: “Subscript out of Range”.
Tas ir tāpēc, ka es mēģināju piekļūt darblapas objektam “Pārdošana”, kura darbgrāmatā nav. Šī 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, skatiet zemāk esošo kodu.
Kods:
1. makro1 () Dim Wb kā darbgrāmatas kopa Wb = darbgrāmatas ("Algu lapa.xlsx") Beigu apakšdaļa
Virs koda teikts, 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, kura pašlaik nav atvērta vai arī 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 kļūdas diapazonu VBA Subscript. Piemēram, apskatiet zemāk redzamo kodu.
Kods:
Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub
Iepriekšminētajā es esmu pasludinājis mainīgo kā masīvu, bet man nav piešķirts sākuma un beigu punkts, drīzāk esmu uzreiz piešķīris pirmajam masīvam vērtību 25.
Ja es palaidīšu šo kodu, izmantojot F5 atslēgu, vai manuāli, mēs saņemsim 9. izpildes laika kļūdu: “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 Err.Description End Sub
Kā redzējām, šis kods izmet izpildes laika kļūdu 9: “Abonements ārpus diapazona programmā Excel VBA . Bet man ir jāizmanto kļūdu apstrādātājs VBA, turpinot nākamo VBA, palaižot kodu, mēs nesaņemsim nekādus kļūdu ziņojumus, bet 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