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

Lang L: none (table-of-contents)

Exceli VBA alaindeks on vahemikust väljas

Vahemikuväline alaindeks on VBA-s esinev viga, 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 lahkunud.

Arst ei saa patsiendile ravimeid anda, teadmata, mis see haigus on. Kindlasti teavad arstid ja patsiendid mõlemad, et on mingi haigus (viga), kuid haigusest (veast) on oluline aru saada kui sellele rohtu 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 Exceli VBA-s tõrge "Alamindikoopia vahemikust väljas".

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

Näiteks kui viidate lehele, mida pole töövihikus, siis kuvatakse tõrge Käitusaeg 9: „Alaindeks on 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.

Näiteks vaadake allolevat pilti. Mul on kolm lehte nimega Leht1, Leht2, Leht3.

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

Kood:

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

Kui käivitan selle koodi klahviga F5 või käsitsi, kuvatakse lõpuks tõrge 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äiteks vaadake allolevat koodi.

Kood:

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

Ülaltoodud kood ütleb, 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 käitamisviga 9: „Alaindeks on vahemikus.

Selle põhjuseks on töövihik, millele viitan, 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 vahemiku veast välja. Näiteks vaadake allolevat koodi.

Kood:

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

Eelnevas olen deklareerinud muutuja massiivina, kuid ma ei ole määranud algus- ja lõpp-punkti; pigem olen määranud esimese massiivi kohe väärtuseks 25.

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

Selle probleemi lahendamiseks pean määrama massiivi pikkuse, kasutades sõna Redim.

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 vajab 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 kasutama VBA-s vea jätkamise jätkamist VBA-s. Me ei saa ühtegi veateadet. Pigem näitab sõnumikasti lõpus mulle sellist vea kirjeldust.

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

Huvitavad Artiklid...