Subscrito VBA fora do intervalo

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 de seu código VBA para depurar o código com eficiência.

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 médicos e pacientes, ambos sabem que existe uma doença (erro) mas é importante entender a doença (erro) do que dar remédio a 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 normalmente encontramos com regularidade, ou seja, o erro “Subscrito fora do intervalo” no Excel VBA.

O que é Subscript out of Range Error no Excel VBA?

Por exemplo, se você está se referindo a uma 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 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.

Para um exemplo, veja a imagem abaixo, eu tenho três folhas nomeadas como 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 este 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 apostila. 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á. Para obter um exemplo, veja 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”. A partir de agora, esta pasta de trabalho não está aberta no meu computador. Se eu executar esse código manualmente ou por meio da tecla F5, obtenho o erro de tempo de execução 9: “Subscrito fora do intervalo”.

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

Erro de subscrição VBA em matrizes

Quando você declara a matriz como a matriz dinâmica e não usa a palavra DIM ou REDIM no VBA para definir o comprimento de uma matriz, geralmente obtemos o erro Subscrito VBA fora do intervalo. 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 uma matriz, mas não atribuí os pontos inicial e final, em vez disso, atribuí imediatamente à primeira matriz 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 deseja ver o erro enquanto o código está ativo e em execução, mas precisa de uma lista de erros no final, você precisa usar 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, este código lançará o erro 9 em tempo de execução: “Subscrito fora do intervalo no Excel VBA . Mas eu tenho que usar o manipulador de erros On Error Resume Next no VBA ao executar o código, não obteremos nenhuma mensagem de erro, mas a caixa de mensagem final mostra a descrição do erro como esta.

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