VBA-alaindeksi alueen ulkopuolella (ajonaikainen virhe '9') | Miksi tämä virhe tapahtuu?

Excel VBA -indeksi on kantaman ulkopuolella

Ala-alueen ulkopuolella oleva alaindeksi on virhe, jonka kohtaamme VBA: ssa, kun yritämme viitata johonkin tai muuttujaan, jota ei ole koodissa, esimerkiksi oletetaan, että meillä ei ole muuttujaa nimeltä x, mutta käytämme msgbox-toimintoa x: ssä havaitsee alaindeksin alueen ulkopuolella olevan virheen.

VBA-alaindeksin ulkopuolella oleva virhe tapahtuu, koska objektia, jota yritämme käyttää, ei ole. Tämä on virhetyyppi VBA-koodauksessa ja tämä on ”Run Time Error 9”. On tärkeää ymmärtää käsitteet tehokkaan koodin kirjoittamiseksi ja vielä tärkeämpää on ymmärtää VBA-koodisi virhe koodin tehokkaan virheen selvittämiseksi.

Jos koodausvirheesi ja et tiedä mikä virhe on, kun olet poissa.

Lääkäri ei voi antaa lääkkeitä potilaalleen tietämättä mikä sairaus on. Varmat lääkärit ja potilaat, molemmat tietävät, että on sairaus (virhe), mutta on tärkeää ymmärtää sairaus (virhe) kuin antaa lääkettä sille. Jos ymmärrät virheen täydellisesti, ratkaisun löytäminen on paljon helpompaa.

Tämän artikkelin vastaavassa huomautuksessa näemme yhden tärkeistä virheistä, joita tavallisesti kohtaamme säännöllisyydellä, ts. ”Subcript Out of Range” -virhe Excel VBA: ssa.

Mikä on alaindeksin alueen ulkopuolella oleva virhe Excel VBA: ssa?

Esimerkiksi, jos viitat taulukkoon, jota ei ole, on työkirja, niin saat Run Time -virheen 9: "Subscript out of Range".

Jos napsautat Lopeta-painiketta, se lopettaa alimenettelyn, jos napsautat virheenkorjausta, se vie koodiriville, jossa siinä tapahtui virhe, ja ohje vie sinut Microsoftin verkkosivulle.

Miksi virhe alaosakkeen ulkopuolella?

Kuten kerroin lääkärinä tärkeäksi löytää kuolleen ennen lääkkeen miettimistä. VBA-alaindeksin ulkopuolella oleva virhe tapahtuu, kun koodirivi ei lue syöttämäämme objektia.

Esimerkkinä alla olevasta kuvasta, minulla on kolme arkkia nimeltä Sheet1, Sheet2, Sheet3.

Nyt koodiin olen kirjoittanut koodin valitaksesi ”Myynti” -arkin.

Koodi:

 Alimakro2 () Arkit ("Myynti"). Valitse Lopeta ali 

Jos suoritan tämän koodin F5-näppäimellä tai manuaalisesti, saan lopulta Run Run -virheen 9: "Subscript out of Range".

Tämä johtuu siitä, että yritin käyttää laskentataulukko-objektia "Myynti", jota ei ole työkirjassa. Tämä on ajoaikavirhe, koska tämä virhe tapahtui koodia suoritettaessa.

Toinen yleinen alaindeksivirhe, jonka saamme, on kun viitataan työkirjaan, jota ei ole siellä. Katso esimerkki alla olevasta koodista.

Koodi:

 Alimakro1 () Dim Wb Työkirjaryhmänä Wb = Työkirjat ("Palkkotaulukko.xlsx") Loppu 

Koodin yläpuolella sanotaan, että muuttujan WB tulee olla yhtä suuri kuin työkirja “Palkkolevy.xlsx”. Tätä työkirjaa ei tällä hetkellä avata tietokoneellani. Jos suoritan tämän koodin manuaalisesti tai F5-avaimen kautta, saan Suoritusaika-virheen 9: "Subscript out of Range".

Tämä johtuu viittaamastani työkirjasta, joka joko ei ole auki tällä hetkellä tai sitä ei ole ollenkaan.

VBA-alaindeksivirhe matriiseissa

Kun ilmoitat taulukon dynaamiseksi taulukoksi ja jos et käytä sanaa DIM tai REDIM VBA: ssa matriisin pituuden määrittelemiseen, saamme yleensä VBA-alaindeksin alueen ulkopuolella. Katso esimerkiksi alla oleva koodi.

Koodi:

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

Edellä on ilmoitettu muuttuja matriisina, mutta en ole määrittänyt alku- ja loppupistettä, vaan olen antanut heti ensimmäiselle ryhmälle arvon 25.

Jos suoritan tämän koodin F5-avaimella tai manuaalisesti, saamme Suoritusaika-virheen 9: "Alaindeksi alueen ulkopuolella".

Tämän ongelman korjaamiseksi minun on määritettävä taulukon pituus käyttämällä Redim-sanaa.

Koodi:

 Alimakro3 () Dim MyArray () Niin kauan ReDim MyArray (1-5) MyArray (1) = 25 End Sub 

Tämä koodi ei anna virheitä.

Kuinka näyttää virheitä VBA-koodin lopussa?

Jos et halua nähdä virhettä koodin ollessa käynnissä, mutta tarvitset virheluettelon lopussa, sinun on käytettävä ”On Error Resume” -virheenkäsittelijää. Katso alla oleva koodi.

Koodi:

 Alimakro1 () Dim Wb Työkirjana virheenä Jatka seuraavaa sarjaa Wb = Työkirjat ("Palkkotaulukko.xlsx") MsgBox Err.Description End Sub 

Kuten olemme nähneet, tämä koodi heittää ajoaikavirheen 9: “Alaindeksi on alueen ulkopuolella Excel VBA: ssa . Mutta minun on käytettävä virheenkäsittelyohjelmaa Virhe Jatka seuraavaksi VBA: ssa, kun suoritat koodia, emme saa virheilmoituksia, vaan loppuviestiruutu näyttää minulle tällaisen virheen kuvauksen.

Voit ladata Excelin VBA-alaindeksin alueen ulkopuolella olevasta mallista täältä: - VBA-alaindeksin alueen ulkopuolella olevasta mallista


$config[zx-auto] not found$config[zx-overlay] not found