Грешка с индекс извън обхвата на Excel във VBA (с 5 решения)

  • Споделя Това
Hugh West

В тази статия ще ви покажем причините за " Субскрипт извън обхвата " грешка в Excel VBA и как да ги решим.

Изтегляне на шаблон за практика

Можете да изтеглите безплатния практически шаблон на Excel от тук.

Грешка с индекс извън обхвата във VBA.xlsm

Какво представлява грешката на Subscript Out of Range във VBA?

VBA Subscript извън обхвата възниква, когато се опитаме да осъществим достъп до несъществуващ член или несъществуваща колекция от масиви в Excel. Това е " Грешка по време на изпълнение 9 " тип грешка в VBA кодиране в Excel.

Грешката обикновено изглежда по следния начин,

5 причини с решения за грешка на индекс извън обхвата във VBA

В този раздел ще бъдат разгледани 5-те най-често срещани причини за появата на Подпис извън обхвата грешка и какви са решенията за нея.

1. Грешка с индекс извън обхвата във VBA за несъществуваща работна книга

Когато се опитате да получите достъп до работна книга на Excel, която не е отворена, ще получите съобщение " Подпис извън обхвата " грешка.

Ако се опитаме да Изпълнявайте кода, показан по-горе, ще получим грешка, защото няма работна книга на Excel с име " Продажби ", който в момента е отворен.

Решение

За да разрешите тази грешка, първо отворете работната книга на Excel, до която искате да получите достъп, и след това стартирайте макроса.

2. Грешка на индекс извън обхвата във VBA за несъществуващ работен лист

Когато се опитате да осъществите достъп до работен лист, който не съществува в работната книга на Excel, тогава ще получите и съобщението " Подпис извън обхвата " грешка в VBA .

Ако се опитаме да стартираме кода, показан по-горе, ще получим грешка, защото няма " Лист2 ", който е наличен в нашата работна тетрадка.

Решение

За да разрешите тази грешка, трябва да имате листа на 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 Subscript Out of Range във VBA

  • VBA Subscript извън обхвата грешка или " Грешка по време на изпълнение 9 " е наистина полезен за определяне на позицията на грешката, където е възникнала в VBA код.
  • Тази грешка помага на потребителите да открият вида на грешката, за да могат да проверят и намерят решения в зависимост от кода на грешката.

Нещата, които трябва да запомните

  • Тъй като тази грешка компилира всяка стъпка от кода, за да ни насочи точно към коя част от кода трябва да предприемем действия, по-добре е да компилирате всеки ред код един по един, като натиснете F8 ако имате огромен ред код.

Заключение

Тази статия ви показа причините и решенията на Excel Подпис извън обхвата грешка в VBA. Надявам се, че тази статия е била много полезна за вас. Чувствайте се свободни да задавате всякакви въпроси, свързани с темата.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.