Indice VBA hors de portée

Indice VBA Excel hors de portée

L'indice hors plage est une erreur que nous rencontrons dans VBA lorsque nous essayons de référencer quelque chose ou une variable qui n'existe pas dans un code, par exemple, supposons que nous n'avons pas de variable nommée x mais que nous utilisons la fonction msgbox sur x nous rencontrera une erreur d'indice hors plage.

Une erreur d'indice VBA hors de portée se produit car l'objet auquel nous tentons d'accéder n'existe pas. Il s'agit d'un type d'erreur dans le codage VBA et il s'agit d'une «erreur d'exécution 9». Il est important de comprendre les concepts pour écrire un code efficace et il est encore plus important de comprendre l'erreur de votre code VBA pour déboguer le code efficacement.

Si votre erreur de codage et que vous ne savez pas quelle est cette erreur, c'est lorsque vous êtes parti.

Un médecin ne peut pas donner de médicaments à son patient sans savoir quelle est la maladie. Pour certains médecins et patients, tous deux savent qu'il y a une maladie (erreur), mais il est important de comprendre la maladie (erreur) plutôt que de lui donner des médicaments. Si vous pouvez parfaitement comprendre l'erreur, il est beaucoup plus facile de trouver la solution.

Sur une note similaire dans cet article, nous verrons l'une des erreurs importantes que nous rencontrons habituellement en termes de régularité, à savoir l'erreur «Indice hors plage» dans Excel VBA.

Qu'est-ce qu'une erreur d'indice hors plage dans Excel VBA?

Par exemple, si vous faites référence à la feuille qui n'est pas là est le classeur, nous obtenons l' erreur d'exécution 9: «Indice hors plage».

Si vous cliquez sur le bouton Terminer, cela mettra fin à la sous-procédure, si vous cliquez sur déboguer, cela vous amènera à la ligne de code où il a rencontré une erreur et l'aide vous mènera à la page du site Web de Microsoft.

Pourquoi une erreur d'indice hors plage se produit?

Comme je l'ai dit en tant que médecin, il est important de trouver le défunt avant de penser au médicament. Une erreur d'indice VBA hors plage se produit lorsque la ligne de code ne lit pas l'objet que nous avons entré.

Pour un exemple, regardez l'image ci-dessous, j'ai trois feuilles nommées Sheet1, Sheet2, Sheet3.

Maintenant dans le code, j'ai écrit le code pour sélectionner la feuille «Ventes».

Code:

 Feuilles de sous-macro2 () ("Ventes"). Sélectionnez Fin sous 

Si j'exécute ce code en utilisant la touche F5 ou manuellement, je finirai par obtenir l' erreur d'exécution 9: «Indice hors plage».

C'est parce que j'ai essayé d'accéder à l'objet de feuille de calcul "Ventes" qui n'existe pas dans le classeur. Il s'agit d'une erreur d'exécution car cette erreur s'est produite lors de l'exécution du code.

Une autre erreur d'indice courante que nous obtenons est lorsque nous faisons référence au classeur qui n'est pas là. Pour un exemple, regardez le code ci-dessous.

Code:

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

Le code ci-dessus indique que la variable WB doit être égale au classeur «Salary Sheet.xlsx». À partir de maintenant, ce classeur n'est pas ouvert sur mon ordinateur. Si j'exécute ce code manuellement ou via la touche F5, j'obtiendrai l' erreur d'exécution 9: «Indice hors plage».

Cela est dû au classeur auquel je fais référence, qui n'est pas ouvert pour le moment ou n'existe pas du tout.

Erreur d'indice VBA dans les baies

Lorsque vous déclarez le tableau en tant que tableau dynamique et si vous n'utilisez pas le mot DIM ou REDIM dans VBA pour définir la longueur d'un tableau, nous obtenons généralement une erreur d'indice VBA hors plage. Par exemple, regardez le code ci-dessous.

Code:

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

Dans ce qui précède, j'ai déclaré la variable en tant que tableau, mais je n'ai pas attribué de point de départ et de fin, mais j'ai immédiatement attribué au premier tableau la valeur 25.

Si j'exécute ce code en utilisant la touche F5 ou manuellement, nous obtiendrons l' erreur d'exécution 9: «Indice hors plage».

Pour résoudre ce problème, je dois attribuer la longueur d'un tableau en utilisant le mot Redim.

Code:

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

Ce code ne donne aucune erreur.

Comment afficher les erreurs à la fin du code VBA?

Si vous ne voulez pas voir l'erreur pendant que le code est en cours d'exécution, mais que vous avez besoin d'une liste d'erreurs à la fin, vous devez utiliser le gestionnaire d'erreurs «On Error Resume». Regardez le code ci-dessous.

Code:

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

Comme nous l'avons vu, ce code lancera l' erreur d'exécution 9: «Indice hors de portée dans Excel VBA . Mais je dois utiliser le gestionnaire d'erreurs On Error Resume Next dans VBA lors de l'exécution du code, nous n'obtiendrons aucun message d'erreur plutôt que la boîte de message de fin me montre la description de l'erreur comme celle-ci.

Vous pouvez télécharger le modèle Excel VBA Subscript Out of Range ici: - Modèle VBA Subscript Out of Range