Как исправить ошибку vba 9 (индекс вне диапазона)?

Индекс вне диапазона (время выполнения: ошибка 9)

Ошибка Subscript Out of Range (Run Time: Error 9) возникает, когда вы ссылаетесь на объект или пытаетесь использовать в коде переменную, которая не существует в коде, в этом случае VBA покажет эту ошибку. Поскольку каждый код, который вы пишете, уникален, причиной ошибки может быть следующий.

индекс вне диапазона

В следующем примере вы попытались активировать «Лист1», который является объектом. Но, как вы можете видеть в книге, листа с именем «Лист1» не существует (вместо этого у вас есть «Лист2»), поэтому VBA отображает «Индекс вне диапазона», чтобы сообщить вам, что с кодом что-то не так.

Индекс вне диапазона

Может возникнуть другая ситуация, когда вам придется столкнуться с ошибкой «Ошибка индекса вне диапазона», когда вы пытаетесь объявить динамический массив, но забываете использовать операторы DIM и ReDim для переопределения длины массива.

Теперь в приведенном выше коде у вас есть массив с именем «myArray», и чтобы сделать его динамическим, мы изначально оставляем длину массива пустой. Но прежде чем добавлять элемент, вам необходимо переопределить длину массива с помощью оператора ReDim.

И это ошибка, которую мы допустили в приведенном выше коде, и VBA вернул ошибку «Сценарий вне диапазона».

 Sub myMacro() Dim myArray() As Variant myArray(1) = "One" End Sub

Как исправить индекс вне диапазона в Excel?

Лучший способ справиться с этим выходом за пределы диапазона индекса — написать эффективные коды и обязательно отладить написанный вами код (шаг за шагом).

Когда вы выполняете код шаг за шагом, вам легко узнать, в какой строке этого кода есть ошибка, потому что VBA покажет вам сообщение об ошибке 9 и выделит эту строку желтым цветом.

Еще вы можете использовать «обработчик ошибок» для перехода к определенной строке ошибки, когда она возникает.

В следующем коде мы написали строку для активации листа, но перед этим мы использовали оператор goto для перехода к обработчику ошибок. В обработчике ошибок у вас есть окно сообщения, в котором отображается сообщение об ошибке Err. Описание того, что произошла ошибка.

Итак, когда вы запускаете этот код, а «Лист1» отсутствует в книге, где вы пытаетесь его активировать. Он покажет вам окно сообщения, как показано ниже.

А если «Лист1» есть, сообщения вообще не будет.

 Sub myMacro() Dim wks As Worksheet On Error GoTo myError Sheets("Sheet1").Activate myError: MsgBox "There's an error in the code: " & Err.Description & _ ". That means there's some problem with the sheet " & _ "that you want to activate" End Sub

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *