VBA alamindeks on vahemikust väljas (käitusviga '9') | Miks see viga ilmneb?

Exceli VBA alaindeks on vahemikust väljas

Vahemikuväline alaindeks on VBA-s esinev tõrge, kui proovime viidata millelegi või muutujale, mida koodis pole, näiteks oletame, et meil pole muutujat nimega x, kuid me kasutame x-i funktsiooni msgbox ilmub alaindeksi vahemikust väljas olev viga.

VBA-alaindeksi vahemikuväline viga ilmneb seetõttu, et objekti, millele proovime juurde pääseda, pole olemas. See on VBA kodeerimise veatüüp ja see on „Run Time Error 9”. Tõhusa koodi kirjutamiseks on oluline mõista mõisteid ja veelgi olulisem on mõista oma VBA koodi viga koodi tõhusaks silumiseks.

Kui teie kodeerimisviga ja te ei tea, mis see viga on, kui olete läinud.

Arst ei saa oma patsiendile ravimeid anda, teadmata, mis see haigus on. Kindlasti teavad arstid ja patsiendid, et on olemas haigus (viga), kuid haigusest (veast) on oluline aru saada kui sellele ravimit anda. Kui saate veast suurepäraselt aru, on lahenduse leidmine palju lihtsam.

Selle artikli sarnase märkuse juures näeme ühte olulist viga, mida tavaliselt korrapärasusega kokku puutume, st viga Exceli VBA-s "Alakiri väljaspool vahemikku".

Mis on Exceli VBA alaindeksi vahemikust väljas olev viga?

Näiteks kui viidate töölehele, mida pole töövihikus, kuvatakse tõrge Käivitusaeg 9: „Alaindeks vahemikust väljas”.

Kui klõpsate nupul Lõpeta, lõpetab see alamprotseduuri. Kui klõpsate silumisel, viib see koodireale, kus ilmnes tõrge, ja abi viib teid Microsofti veebisaidi lehele.

Miks ilmub alaindeksi vahemikust väljas viga?

Nagu ma arstina ütlesin, et enne ravimi peale mõtlemist tuleb surnu üles leida. VBA-alaindeksi vahemikuväline tõrge ilmneb siis, kui koodirida ei loe sisestatud objekti.

Alloleva pildi vaatamiseks on mul kolm lehte nimega Sheet1, Sheet2, Sheet3.

Nüüd koodis olen kirjutanud koodi lehe “Müük” valimiseks.

Kood:

 Alammakro2 () lehed ("Müük"). Valige Lõpeta alam 

Kui käivitan selle koodi F5-klahvi abil või käsitsi, saan lõpuks tõrke Run Run 9: „Subscript out of Range”.

Seda seetõttu, et proovisin juurde pääseda tööleheobjektile „Müük”, mida töövihikus pole. See on käitamisviga, kuna see tõrge ilmnes koodi käivitamisel.

Teine levinud alaindeksi viga on see, kui viidame töövihikule, mida seal pole. Näite saamiseks vaadake allolevat koodi.

Kood:

 Alammakro1 () Dim Wb töövihikukomplektina Wb = töövihikud ("Palgaleht.xlsx") Lõpp alam 

Koodi kohal öeldakse, et muutuja WB peaks olema võrdne töövihikuga “Palgaleht.xlsx”. Praeguse seisuga seda töövihikut minu arvutis ei avata. Kui käivitan selle koodi käsitsi või klahvi F5 kaudu, kuvatakse tõrge Käivitusaeg 9: „Abikiri on vahemikust väljas”.

Selle põhjuseks on minu viidatud töövihik, mis pole praeguse seisuga avatud või pole seda üldse olemas.

VBA alamindeksi viga massiivides

Kui kuulutate massiivi dünaamiliseks massiiviks ja kui te ei kasuta massiivi pikkuse määratlemiseks VBA-s sõna DIM või REDIM, saame tavaliselt VBA-alamindeksi vahemikust välja. Näiteks vaadake allolevat koodi.

Kood:

 Alammakro3 () Dim MyArray () Kui pikk MyArray (1) = 25 End Sub 

Eespool on deklareeritud muutuja massiivina, kuid ma ei ole määranud algus- ja lõpp-punkti, vaid olen määranud esimesele massiivile kohe väärtuse 25.

Kui käivitan selle koodi F5-klahvi abil või käsitsi, kuvatakse käivitamisaja tõrge 9: „Alaindeks on vahemikust väljas”.

Selle probleemi lahendamiseks pean määrama massiivi pikkuse Redim-sõna abil.

Kood:

 Alammakro3 () Dim MyArray () nii kaua ReDim MyArray (1 kuni 5) MyArray (1) = 25 End Sub 

See kood ei anna vigu.

Kuidas näidata vigu VBA-koodi lõpus?

Kui te ei soovi viga näha, kui kood töötab ja töötab, kuid vajate lõpus tõrke loendit, peate kasutama tõrkeotsingut „On Error Resume”. Vaadake allolevat koodi.

Kood:

 Alammakro1 () Dim Wb kui töövihik vea korral Jätka järgmist komplekti Wb = töövihikud ("Palgaleht.xlsx") MsgBox Err.Description End Sub 

Nagu nägime, viskab see kood käitusaja tõrke 9: „Allindeks on Exceli VBA vahemikust väljas . Kuid ma pean koodi käivitamise ajal VBA-s Vea jätkamise järgselt kasutama tõrkeotsingut, kuid me ei saa ühtegi veateadet, pigem näitab sõnumi lõpus kast vea kirjeldust.

Exceli VBA-alaindeksi vahemikust väljas saate alla laadida siit: - VBA-alaindeksi vahemikust väljas olev mall