Dolný index VBA je mimo rozsahu (chyba spustenia „9“) - Prečo sa táto chyba vyskytuje?

Dolný index Excel VBA je mimo rozsahu

Dolný index mimo rozsahu je chyba, s ktorou sa vo VBA stretávame, keď sa pokúšame odkazovať na niečo alebo na premennú, ktorá v kóde neexistuje, napríklad, predpokladajme, že nemáme premennú s názvom x, ale na x použijeme funkciu msgbox narazíte na dolný index chyby mimo rozsah.

Vyskytla sa chyba indexu VBA mimo rozsahu, pretože objekt, ku ktorému sa pokúšame získať prístup, neexistuje. Toto je typ chyby v kódovaní VBA a jedná sa o „chybu pri spustení 9“. Je dôležité porozumieť konceptom písania efektívneho kódu a ešte dôležitejšie je pochopiť chybu vášho kódu VBA, aby ste kód efektívne ladili.

Ak je vaša chyba v kódovaní a neviete, čo je to za chybu, keď ste preč.

Lekár nemôže svojmu pacientovi podať liek bez toho, aby vedel, o akú chorobu ide. Lekári aj pacienti iste vedia, že existuje choroba (chyba), ale je dôležité chorobe (chybe) porozumieť, než aby ste na ňu dávali lieky. Ak ste dobre pochopili chybu, je oveľa jednoduchšie nájsť riešenie.

V podobnej poznámke v tomto článku uvidíme jednu z dôležitých chýb, s ktorými sa obvykle stretávame pravidelne, tj chybu „Dolný index mimo rozsah“ v programe Excel VBA.

Čo je chyba dolného indexu v rozsahu v programe Excel VBA?

Napríklad, ak máte na mysli hárok, ktorý tam nie je, je tu zošit, zobrazí sa nám chyba chodu 9: „Dolný index mimo rozsahu.“

Ak kliknete na tlačidlo Ukončiť, ukončí sa podproces, ak kliknete na ladenie, dostanete sa na riadok kódu, kde sa vyskytla chyba, a pomoc vás presmeruje na webovú stránku spoločnosti Microsoft.

Prečo sa vyskytuje chyba mimo indexu?

Ako som povedal ako lekár, dôležité je nájsť zosnulého skôr, ako budem uvažovať o lieku. Chyba indexu VBA mimo rozsahu sa vyskytne, keď riadok kódu nečíta objekt, ktorý sme zadali.

Napríklad sa pozrite na obrázok nižšie. Mám tri hárky s názvom List1, List2, Sheet3.

Teraz v kóde som napísal kód na výber listu „Predaj“.

Kód:

Sub Macro2 () hárky („Predaj“). Vyberte možnosť End Sub

Ak spustím tento kód pomocou klávesu F5 alebo manuálne, nakoniec sa zobrazí chyba chodu 9: „Dolný index mimo rozsah.“

Je to tak preto, lebo som sa pokúsil získať prístup k objektu pracovného hárka „Predaj“, ktorý v zošite neexistuje. Toto je chyba za behu, pretože k tejto chybe došlo počas spustenia kódu.

Ďalšou častou chybou dolného indexu, ktorú dostaneme, je odkaz na zošit, ktorý tam nie je. Napríklad si pozrite nasledujúci kód.

Kód:

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

Vyššie uvedený kód hovorí, že premenná WB by sa mala rovnať zošitu „Salary Sheet.xlsx“. Odteraz nie je tento zošit otvorený v počítači. Ak tento kód spustím ručne alebo pomocou klávesu F5, zobrazí sa mi chyba chodu 9: „Dolný index mimo rozsah.“

Je to spôsobené pracovným zošitom, na ktorý odkazujem a ktorý buď nie je odteraz otvorený, alebo vôbec neexistuje.

Chyba dolného indexu VBA v poliach

Keď deklarujete pole ako dynamické pole a ak na definovanie dĺžky poľa nepoužívate vo VBA slovo DIM alebo REDIM, zvyčajne dostaneme index VBA mimo chybu rozsahu. Napríklad si pozrite nasledujúci kód.

Kód:

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

Vo vyššie uvedenom texte som deklaroval premennú ako pole, ale nepriradil som jej začiatočný a konečný bod; skôr som hneď priradil prvému poľu hodnotu 25.

Ak tento kód spustím pomocou klávesu F5 alebo manuálne, zobrazí sa nám chyba chodu 9: „Dolný index mimo rozsahu.“

Ak chcete vyriešiť tento problém, musím priradiť dĺžku poľa pomocou slova Redim.

Kód:

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

Tento kód nedáva žiadne chyby.

Ako zobraziť chyby na konci kódu VBA?

Ak nechcete vidieť chybu, kým je kód v prevádzke, ale potrebujete zoznam chýb na konci, musíte použiť obslužnú rutinu chýb „On Error Resume“. Pozrite sa na nasledujúci kód.

Kód:

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

Ako sme videli, tento kód spôsobí chybu chodu 9: „Dolný index mimo rozsahu v programe Excel VBA . Ale pri spustení kódu musím vo VBA použiť obslužný program chyby On Error Resume Next. Nebudeme dostávať žiadne chybové správy. Skôr na konci sa mi zobrazí okno s chybou, ako je tento.

Šablónu Excel VBA Subscript Out of Range si môžete stiahnuť tu: - Šablóna VBA Subscript Out of Range

Zaujímavé články...