Змест
У гэтым артыкуле мы пакажам вам прычыны памылкі « Індэкс па-за дыяпазонам » у Excel VBA і як іх вырашыць.
Спампуйце шаблон практыкі
Вы можаце спампаваць бясплатны шаблон Excel практыкі адсюль.
Памылка індэкса па-за дыяпазонам у VBA.xlsm
Што такое індэкс па-за дыяпазонам у VBA?
Памылка VBA па-за дыяпазонам узнікае, калі мы спрабуем атрымаць доступ да любога неіснуючага члена або калекцыі неіснуючага масіва ў Excel. Гэта памылка тыпу « Памылка выканання 9 » у кадаванні VBA ў Excel.
Памылка звычайна выглядае так,
5 прычын памылкі выхаду індэкса за межы дыяпазону ў VBA
У гэтым раздзеле будуць абмяркоўвацца 5 найбольш распаўсюджаных прычын узнікнення Памылка ніжняга індэкса па-за дыяпазонам і спосабы яе вырашэння.
1. Памылка індэкса па-за дыяпазонам у VBA для неіснуючай працоўнай кнігі
Калі вы спрабуеце атрымаць доступ да неадкрытай працоўнай кнігі Excel, вы атрымаеце паведамленне пра памылку « Індэкс па-за дыяпазонам ».
Калі мы паспрабуем Запусціць код, паказаны вышэй, мы атрымаем паведамленне пра памылку, таму што няма рабочай кнігі Excel з назвай “ Sales », які зараз адкрыты.
Рашэнне
Каб вырашыць гэтую памылку, спачатку адкрыйце працоўную кнігу Excel, да якой вы хочаце атрымаць доступ, а затым запусціце макрас.
2. Памылка ніжняга індэкса па-за дыяпазонам у VBA для неіснуючагаПрацоўны ліст
Калі вы спрабуеце атрымаць доступ да працоўнага аркуша, якога няма ў кнізе Excel, вы таксама атрымаеце памылку « Індэкс па-за дыяпазонам » у VBA .
Калі мы паспрабуем запусціць код, паказаны вышэй, мы атрымаем памылку, таму што няма « Sheet2 ” аркуш, даступны ў нашай кнізе.
Рашэнне
Каб вырашыць гэтую памылку, вам трэба мець аркуш Excel, да якога вы хочаце атрымаць доступ у запушчанай кнізе і потым запусціце макрас.
3. Памылка выхаду ніжняга індэкса з дыяпазону ў VBA для нявызначаных элементаў масіва
Калі вы не вызначаеце даўжыню дынамічнага масіву з дапамогай слова DIM або REDIM у Excel VBA , тады вы атрымаеце памылку « Індэкс па-за дыяпазонам ».
У прыведзеным вышэй кодзе мы аб'явілі масіў у памернасці ад 5 да 10, але спаслаліся на індэкс 3, які меншы за 5.
Рашэнне
Каб вырашыць гэтую праблему, аб'явіце індэкс паміж памернасцю масіва.
Гэты фрагмент Код працуе цалкам нармальна, таму што тут мы спаслаліся на ніжні індэкс індэкса 5, які знаходзіцца ў дыяпазоне ад 5 да 10.
4. Памылка індэкса па-за дыяпазонам у VBA з-за несапраўднай калекцыі/ Масіў
Калі ніжні індэкс большы або меншы за дыяпазон магчымых індэксаў, узнікне памылка Індэкс па-за дыяпазонам .
Паглядзіце на прыведзены вышэй прыклад, мыабвясцілі зменную як масіў, але замест таго, каб прызначаць пачатковую і канчатковую кропкі, мы непасрэдна прызначылі першаму масіву значэнне 20.
Рашэнне
Каб выправіць гэтую праблему, нам трэба прызначыць даўжыню масіва з пачатковай і канчатковай кропкамі.
Гэты код не дае памылак, таму што цяпер мы аб'явілі масіў з пачатковай кропкай 1 і канчатковай кропкай 5.
5. Памылка ніжняга індэкса па-за дыяпазонам у VBA для скарочанага сцэнарыя
Калі вы выкарыстоўваеце стэнаграфію з індэкс і спасылаецца на несапраўдны элемент, то вы атрымаеце памылку « Індэкс па-за дыяпазонам » у Excel VBA . Напрыклад, [A2] з'яўляецца скарачэннем для ActiveSheet.Range(A2) .
Рашэнне
Каб выправіць у гэтым выпадку вы павінны выкарыстоўваць сапраўднае імя ключа і індэкс для калекцыі. Замест таго, каб пісаць ActiveSheet.Range(A2) , вы можаце проста напісаць [ A2 ].
Перавагі Excel Index Out-of Range Error у VBA
- Памылка індэкса VBA па-за дыяпазонам або « Памылка выканання 9 » вельмі карысна для ўказання месца памылкі, дзе яна адбылася у кодзе VBA .
- Гэтая памылка дапамагае карыстальнікам знайсці тып памылкі, каб яны маглі праверыць і знайсці рашэнні ў адпаведнасці з кодам памылкі.
Пра што трэба памятаць
- Паколькі гэтая памылка кампілюе кожны крок кода, каб вызначыць, якую менавіта часткукод, для якога мы сапраўды павінны выконваць дзеянні, таму лепш кампіляваць кожны радок кода адзін за адным, націскаючы клавішу F8 , калі ў вас вялікі радок кода.
Выснова
Гэты артыкул паказаў вам прычыны і спосабы вырашэння памылкі Excel Індэкс па-за дыяпазонам у VBA. Я спадзяюся, што гэты артыкул быў для вас вельмі карысным. Не саромейцеся задаваць любыя пытанні па тэме.