Как да коригирам грешка „Subscript Out of Range“ в Visual Basic за приложения?



Опитайте Нашия Инструмент За Премахване На Проблемите

Visual Basic for Applications (VBA) е изпълнение на езика за програмиране Visual Basic, разработен от Microsoft. VBA може да се използва за активиране на UDF, автоматизиране на задачи и за достъп до WinAPI чрез DLL. Съвсем наскоро обаче се появиха много доклади, при които потребителите не могат да изпълняват определени команди и Индекс извън обхвата, грешка 9 ”Изскача, докато се опитвате да го направите.



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



Какво причинява грешката „Индекс извън обхвата“ във VBA?

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



  • Несъществуващ елемент: В някои случаи е възможно да сте посочили елемент в командата, който не съществува. Възможно е индексът да е или по-голям, или по-малък от обхвата на възможните индекси или размери може да не са били присвоени на масива в този момент от приложението.
  • Недефинирани елементи: Възможно е да не сте идентифицирали броя на елементите в кода си, важно е броят на елементите в масива да се дефинира с помощта на командите „Dim“ или „ReDim“.
  • Неправилен член на колекцията: В някои случаи потребителят може да се е позовал на член на колекция, който не съществува. Ако се направи неправилна препратка към члена на колекцията, тази грешка може да се задейства.
  • Сценарист: Възможно е да сте използвали стенографска форма на индекс и неявно да е посочил елемент, който е невалиден. Важно е да използвате валидно име на ключ.

Сега, когато имате основно разбиране за същността на проблема, ние ще продължим към решенията. Уверете се, че ги прилагате в конкретния ред, в който са представени, за да избегнете конфликт.

Решение 1: Проверка на масиви

Възможно е да сте дефинирали неправилна стойност за елемента Array. Ето защо се препоръчва да проверите отново стойността, която сте определили за елемента Array, и да се уверите, че е правилната. Също така, не забравяйте да проверите декларацията на масива и проверете горната и долната граница. Ако масивите са преработени, не забравяйте да използвате LBound и UBound функции за условие за достъп. Проверете правописа на името на променливата, ако индексът е променлива.

Масив във VBA Excel



Решение 2: Посочване на брой елементи

В някои случаи е възможно да не сте дефинирали броя на елементите във вашия код, поради които се задейства грешката. Препоръчително е да посочите броя на елементите в масива с помощта на Нито един или ReDim функции.

Използване на Dim и ReDim за задаване на броя на елементите

Решение 3: Промяна на конструкцията

Тази грешка обикновено се задейства, когато потребителят посочи неправилен или несъществуващ член на колекцията. Ето защо, вместо да посочвате елементите на индекса, се препоръчва да се обърнете към „ За всеки ... Напред ”Конструирам.

Използване на конструкцията „За всеки ... Напред“

Решение 4: Проверка на име на ключ и индекс

В някои случаи е възможно да сте използвали стенографска форма на индекса и тя да посочва невалиден елемент. Затова се препоръчва да използвате a валиден ключ име и индекс за колекцията.

Използване на валидно име на ключ

2 минути четене