ВБА индекс изван опсега (грешка током извршавања '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: „Претплата је изван опсега у програму Екцел ВБА. Али морам да користим руковалац грешкама Он Еррор Ресуме Нект (Следеће у ВБА) у ВБА током покретања кода, нећемо добити поруке о грешци, већ ми на крају поруке приказује опис грешке попут овог.

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