Indice VBA fuori intervallo

Indice VBA di Excel fuori intervallo

L'indice fuori intervallo è un errore che riscontriamo in VBA quando proviamo a fare riferimento a qualcosa o una variabile che non esiste in un codice, ad esempio, supponiamo di non avere una variabile chiamata x ma usiamo la funzione msgbox su x noi incontrerà un errore di indice fuori intervallo.

Si verifica un errore fuori intervallo dell'indice VBA perché l'oggetto a cui stiamo tentando di accedere non esiste. Questo è un tipo di errore nella codifica VBA e questo è un "Run Time Error 9". È importante comprendere i concetti per scrivere codice efficiente ed è ancora più importante comprendere l'errore del codice VBA per eseguire il debug del codice in modo efficiente.

Se il tuo errore di codifica e non sai qual è l'errore quando te ne sei andato.

Un medico non può dare medicine al suo paziente senza sapere qual è la malattia. Sicuramente medici e pazienti sanno entrambi che esiste una malattia (errore) ma è importante capire la malattia (errore) piuttosto che somministrarle medicine. Se riesci a capire perfettamente l'errore, è molto più facile trovare la soluzione.

In una nota simile in questo articolo, vedremo uno degli errori importanti che di solito incontriamo di regolarità, ovvero l'errore "Indice fuori intervallo" in Excel VBA.

Qual è l'errore di indice fuori intervallo in Excel VBA?

Ad esempio, se si fa riferimento al foglio che non è presente la cartella di lavoro, viene visualizzato l' errore di runtime 9: "Indice fuori intervallo".

Se fai clic sul pulsante Fine terminerà la sottoprocedura, se fai clic su debug ti porterà alla riga di codice in cui si è verificato un errore e la guida ti porterà alla pagina del sito Web di Microsoft.

Perché si verifica un errore di pedice fuori intervallo?

Come ho detto come medico importante per trovare il defunto prima di pensare alla medicina. L'errore di indice VBA fuori intervallo si verifica quando la riga di codice non legge l'oggetto che abbiamo inserito.

Per un esempio, guarda l'immagine qui sotto, ho tre fogli denominati Foglio1, Foglio2, Foglio3.

Ora nel codice, ho scritto il codice per selezionare il foglio "Vendite".

Codice:

 Sub Macro2 () Sheets ("Sales") Selezionare End Sub 

Se eseguo questo codice utilizzando il tasto F5 o manualmente, finirò per ricevere l' errore di runtime 9: "Indice fuori intervallo".

Questo perché ho provato ad accedere all'oggetto del foglio di lavoro "Vendite" che non esiste nella cartella di lavoro. Si tratta di un errore di runtime perché si è verificato durante l'esecuzione del codice.

Un altro errore comune in pedice che otteniamo è quando ci riferiamo alla cartella di lavoro che non è presente. Per un esempio, guarda il codice seguente.

Codice:

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

Il codice sopra dice che la variabile WB dovrebbe essere uguale alla cartella di lavoro "Salary Sheet.xlsx". A partire da ora, questa cartella di lavoro non è aperta sul mio computer. Se eseguo questo codice manualmente o tramite il tasto F5, riceverò l'errore di runtime 9: "Indice fuori intervallo".

Ciò è dovuto alla cartella di lavoro a cui mi riferisco, che al momento non è aperta o non esiste affatto.

Errore nell'indice VBA negli array

Quando dichiari l'array come array dinamico e se non usi la parola DIM o REDIM in VBA per definire la lunghezza di un array, di solito otteniamo l'errore VBA Index fuori intervallo. Ad esempio, guarda il codice seguente.

Codice:

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

In quanto sopra, ho dichiarato la variabile come un array ma non ho assegnato il punto di inizio e di fine piuttosto ho subito assegnato al primo array il valore di 25.

Se eseguo questo codice utilizzando il tasto F5 o manualmente, verrà visualizzato l' errore di esecuzione 9: "Indice fuori intervallo".

Per risolvere questo problema, è necessario assegnare la lunghezza di un array utilizzando la parola Redim.

Codice:

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

Questo codice non fornisce errori.

Come mostrare gli errori alla fine del codice VBA?

Se non si desidera visualizzare l'errore mentre il codice è attivo e in esecuzione, ma alla fine è necessario un elenco degli errori, è necessario utilizzare il gestore degli errori "On Error Resume". Guarda il codice sottostante.

Codice:

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

Come abbiamo visto, questo codice genererà l' errore di runtime 9: "Indice fuori intervallo in Excel VBA . Ma devo usare il gestore degli errori On Error Resume Next in VBA durante l'esecuzione del codice non riceveremo alcun messaggio di errore piuttosto che alla fine della finestra del messaggio mi viene mostrata la descrizione dell'errore come questa.

È possibile scaricare il modello Excel VBA indice fuori intervallo qui: - Modello VBA indice fuori intervallo