ВБА индекс изван опсега (грешка током извршавања '9') - Зашто се ова грешка јавља?

Екцел ВБА Субсцрипт изван домета

Индекс изван опсега је грешка на коју наилазимо у ВБА када покушавамо да референцирамо нешто или променљиву која не постоји у коду, на пример, претпоставимо да немамо променљиву која се зове к, али користимо функцију мсгбок на к ве наићи ће на грешку индекса изван опсега.

Појављује се грешка ВБА Субсцрипт изван домета јер објекат којем покушавамо да приступимо не постоји. Ово је врста грешке у ВБА кодирању, а ово је „Грешка у времену извођења 9“. Важно је разумети концепте за писање ефикасног кода, а још важније је разумети грешку вашег ВБА кода за ефикасно отклањање грешака у коду.

Ако имате грешку у кодирању и не знате која је та грешка када вас више нема.

Лекар не може давати лекове свом пацијенту, а да не зна која је болест. Свакако и лекари и пацијенти знају да постоји болест (грешка), али важно је разумети болест (грешку) него давање лекова. Ако грешку можете савршено разумети, онда је много лакше пронаћи решење.

На сличној белешци у овом чланку видећемо једну од важних грешака на које обично наилазимо регуларност, тј. Грешку „Субсцрипт Оут оф Ранге“ у програму Екцел ВБА.

Шта је грешка у индексу изван опсега у програму Екцел ВБА?

На пример, ако се позивате на табелу која није, постоји радна свеска, тада ћемо добити грешку Рун тиме 9: „Субсцрипт оут оф Ранге“.

Ако кликнете на дугме Крај, завршиће потпроцедура, ако кликнете на отклањање грешака, одвешће вас до линије кода где је наишла на грешку, а помоћ ће вас одвести на страницу Мицрософт веб локације.

Зашто се јавља грешка индекса изван опсега?

Као што сам рекао као лекар важан за проналазак покојника пре него што сам размишљао о леку. ВБА грешка ван опсега грешке јавља се када линија кода не чита објекат који смо унели.

На пример, погледајте доњу слику. Имам три листа са именом Схеет1, Схеет2, Схеет3.

Сада сам у коду написао код да бих изабрао лист „Продаја“.

Шифра:

Суб Мацро2 () листови („Продаја“). Изаберите Енд Суб

Ако покренем овај код помоћу тастера Ф5 или ручно, на крају ћу добити грешку Рун тиме 9: „Субсцрипт оут оф Ранге“.

То је зато што сам покушао да приступим објекту радног записа „Продаја“, који не постоји у радној свесци. Ово је грешка у времену извођења јер се ова грешка догодила током покретања кода.

Још једна уобичајена грешка индекса коју имамо је када се позивамо на радну свеску која није тамо. На пример, погледајте доњи код.

Шифра:

Подмакронаредба1 () Затамни Вб као комплет радне свеске Вб = Радне свеске („Лист зарада.клск“) Крај под

Горњи код каже да би променљива ВБ требало да буде једнака радној свесци „Плата рада.клск“. За сада ова радна свеска није отворена на мом рачунару. Ако покренем овај код ручно или преко тастера Ф5, добићу грешку Рун тиме 9: „Субсцрипт оут оф Ранге“.

То је због радне свеске на коју се позивам или која од сада није отворена или уопште не постоји.

ВБА грешка у индексу у низовима

Када декларишете низ као динамички низ и ако у ВБА не користите реч ДИМ или РЕДИМ за дефинисање дужине низа, обично добијамо грешку ВБА Субсцрипт изван опсега. На пример, погледајте доњи код.

Шифра:

Суб Мацро3 () Затамни МиАрраи () Као Лонг МиАрраи (1) = 25 Крај Суб

У горе наведеном, прогласио сам променљиву као низ, али нисам доделио почетну и завршну тачку; него сам одмах првом низу доделио вредност 25.

Ако покренем овај код помоћу тастера Ф5 или ручно, добићемо грешку времена извођења 9: „Субсцрипт оут оф Ранге“.

Да бих решио овај проблем, треба да доделим дужину низа помоћу речи Редим.

Шифра:

Суб Мацро3 () Затамни МиАрраи () Као дуго РеДим МиАрраи (1 до 5) МиАрраи (1) = 25 Крај Суб

Овај код не даје грешке.

Како приказати грешке на крају ВБА кода?

Ако не желите да видите грешку док је код покренут, али вам је на крају потребан списак грешака, онда морате да користите руковатељ грешкама „У наставку грешке“. Погледајте доњи код.

Шифра:

Суб Мацро1 () Затамни Вб као радну свеску о грешци Настави следећи сет Вб = Радне свеске ("Табела зараде.клск") МсгБок Ерр.Десцриптион Енд Суб

Као што смо видели, овај код ће избацити грешку времена извођења 9: „Субсцрипт оут оф Ранге ин Екцел ВБА . Али морам да користим управљач грешкама Он Еррор Ресуме Нект у ВБА док покрећем код. Нећемо добити поруке о грешци. Уместо на крају оквира за поруку приказује ми се опис грешке попут овог.

Овде можете преузети Екцел ВБА Субсцрипт Оут оф Ранге Темплате: - ВБА Субсцрипт Оут оф Ранге Темплате

Занимљиви Чланци...