Subscrito VBA fora do intervalo (erro em tempo de execução '9') - Por que esse erro ocorre?

Excel VBA Subscrito fora do intervalo

Subscrito fora do intervalo é um erro que encontramos no VBA quando tentamos fazer referência a algo ou uma variável que não existe em um código, por exemplo, vamos supor que não temos uma variável chamada x, mas usamos a função msgbox em x nós encontrará um erro de subscrito fora do intervalo.

O erro VBA Subscript fora do intervalo ocorre porque o objeto que estamos tentando acessar não existe. Este é um tipo de erro na codificação VBA e é um “Erro de tempo de execução 9”. É importante entender os conceitos para escrever código eficiente e é ainda mais importante entender o erro do código VBA para depurar o código de forma eficiente.

Se o seu erro de codificação e você não souber o que é esse erro quando você se foi.

Um médico não pode dar remédio a seu paciente sem saber qual é a doença. Com certeza, tanto médicos quanto pacientes sabem que existe uma doença (erro), mas é importante entender a doença (erro) do que dar remédio para ela. Se você puder entender o erro perfeitamente, será muito mais fácil encontrar a solução.

Em uma observação semelhante neste artigo, veremos um dos erros importantes que geralmente encontramos com regularidade, ou seja, o erro “Subscrito fora do intervalo” no Excel VBA.

O que é o erro Subscrito fora do intervalo no Excel VBA?

Por exemplo, se você estiver se referindo à planilha que não existe na pasta de trabalho, obteremos o erro de tempo de execução 9: “Subscrito fora do intervalo”.

Se você clicar no botão Encerrar, o subprocedimento será encerrado; se você clicar em depurar, ele o levará para a linha de código onde encontrou um erro e a ajuda o levará para a página do site da Microsoft.

Por que ocorre o erro de subscrito fora do intervalo?

Como disse como médico importante encontrar o falecido antes de pensar no medicamento. O erro de subscrição VBA fora do intervalo ocorre quando a linha de código não lê o objeto que inserimos.

Por exemplo, olhe para a imagem abaixo. Tenho três folhas chamadas Folha1, Folha2, Folha3.

Agora no código, escrevi o código para selecionar a planilha "Vendas".

Código:

Sub Macro2 () Folhas ("Vendas"). Selecione End Sub

Se eu executar esse código usando a tecla F5 ou manualmente, acabarei obtendo o erro de tempo de execução 9: “Subscrito fora do intervalo”.

Isso porque tentei acessar o objeto de planilha “Vendas”, que não existe na pasta de trabalho. Este é um erro de tempo de execução porque ocorreu durante a execução do código.

Outro erro comum de subscrito que obtemos é quando nos referimos à pasta de trabalho que não está lá. Por exemplo, observe o código abaixo.

Código:

Sub Macro1 () Dim Wb As Workbook Set Wb = Workbooks ("Salary Sheet.xlsx") End Sub

O código acima diz que a variável WB deve ser igual à pasta de trabalho “Folha de Salário.xlsx”. No momento, esta pasta de trabalho não está aberta no meu computador. Se eu executar esse código manualmente ou por meio da tecla F5, receberei o erro de tempo de execução 9: “Subscrito fora do intervalo”.

Isso se deve à pasta de trabalho a que me refiro, que não está aberta agora ou nem existe.

Erro de subscrito VBA em matrizes

Quando você declara o array como o array dinâmico, e se você não usa a palavra DIM ou REDIM no VBA para definir o comprimento de um array, normalmente obtemos VBA Subscript out of range error. Por exemplo, observe o código abaixo.

Código:

Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub

Acima, declarei a variável como um array, mas não atribuí um ponto inicial e final; em vez disso, atribuí imediatamente ao primeiro array o valor 25.

Se eu executar este código usando a tecla F5 ou manualmente, obteremos o erro de tempo de execução 9: “Subscrito fora do intervalo”.

Para corrigir esse problema, preciso atribuir o comprimento de uma matriz usando a palavra Redim.

Código:

Sub Macro3 () Dim MyArray () As Long ReDim MyArray (1 a 5) MyArray (1) = 25 End Sub

Este código não dá erros.

Como mostrar erros no final do código VBA?

Se você não quiser ver o erro enquanto o código estiver ativo e em execução, mas precisar de uma lista de erros no final, use o manipulador de erros “On Error Resume”. Olhe o código abaixo.

Código:

Sub Macro1 () Dim Wb As Workbook On Error Resume Next Set Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Description End Sub

Como vimos, esse código gerará o erro de tempo de execução 9: “Subscrito fora do intervalo no Excel VBA . Mas eu tenho que usar o manipulador de erros On Error Resume Next no VBA durante a execução do código. Não receberemos nenhuma mensagem de erro. Em vez disso, a caixa de mensagem final mostra a descrição do erro como esta.

Você pode baixar o modelo fora do intervalo do Subscript VBA aqui: - Modelo fora do intervalo do subscrito VBA

Artigos interessantes...