Como corrigir o erro 9 do vba (índice fora do intervalo)?
Índice fora do intervalo (tempo de execução: erro 9)
O erro de subscrito fora do intervalo (tempo de execução: erro 9) ocorre quando você se refere a um objeto ou tenta usar uma variável no código que não existe no código, neste caso o VBA mostrará este erro. Como cada código que você escreve é único, a causa do erro seria.
No exemplo a seguir, você tentou ativar “Sheet1”, que é um objeto. Mas, como você pode ver na pasta de trabalho, não existe nenhuma planilha com o nome “Planilha1” (em vez disso, você tem “Planilha2”), então o VBA mostra “Subscrito fora do intervalo” para informar que há algo errado com o código.
Índice fora do intervalo
Pode haver outra situação em que você terá que enfrentar o erro “Subscript Out of Range Error” ao tentar declarar um array dinâmico, mas se esquecer de usar as instruções DIM e ReDim para redefinir o comprimento do array.
Agora no código acima você tem um array com o nome “myArray” e para torná-lo dinâmico deixamos inicialmente o comprimento do array vazio. Mas antes de adicionar um elemento, você precisa redefinir o comprimento do array usando a instrução ReDim.
E este é o erro que cometemos no código acima e o VBA retornou o erro “Script fora do intervalo”.
Sub myMacro() Dim myArray() As Variant myArray(1) = "One" End Sub
Como corrigir índice fora do intervalo no Excel?
A melhor maneira de lidar com esse índice fora do intervalo é escrever códigos eficientes e certificar-se de depurar o código que você escreveu (passo a passo).
Quando você executa um código passo a passo, é fácil saber em qual linha desse código você tem um erro porque o VBA mostrará a mensagem de erro do erro 9 e destacará essa linha em amarelo.
A outra coisa que você pode fazer é usar um “manipulador de erros” para pular para uma linha de erro específica quando ela ocorrer.
No código a seguir, escrevemos uma linha para ativar a planilha, mas antes disso, usamos a instrução goto para passar para o manipulador de erros. No manipulador de erros você tem uma caixa de mensagem que mostra uma mensagem com o erro. Descrição de que ocorreu um erro.
Portanto, quando você executa este código e “Planilha1” não está na pasta de trabalho onde você está tentando ativá-lo. Ele mostrará uma caixa de mensagem como abaixo.
E se a “Planilha1” estiver lá, não haverá mensagem alguma.
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