Come correggere l'errore vba 9 (indice fuori intervallo)?
Indice fuori intervallo (runtime: errore 9)
L’errore Subscript Out of Range (Run Time: Error 9) si verifica quando si fa riferimento a un oggetto o si tenta di utilizzare una variabile nel codice che non esiste nel codice, in questo caso VBA mostrerà questo errore. Poiché ogni codice che scrivi è unico, la causa dell’errore sarebbe.
Nell’esempio seguente hai provato ad attivare il “Foglio1” che è un oggetto. Ma come puoi vedere nella cartella di lavoro, non esiste alcun foglio di lavoro con il nome “Foglio1” (invece hai “Foglio2”), quindi VBA mostra “Indice fuori intervallo” per informarti che c’è qualcosa di sbagliato nel codice.
Indice fuori intervallo
Potrebbe esserci un’altra situazione in cui devi affrontare l’errore “Errore indice fuori intervallo” quando provi a dichiarare un array dinamico ma dimentichi di utilizzare le istruzioni DIM e ReDim per ridefinire la lunghezza dell’array.
Ora nel codice sopra hai un array con il nome “myArray” e per renderlo dinamico lasciamo inizialmente vuota la lunghezza dell’array. Ma prima di aggiungere un elemento, è necessario ridefinire la lunghezza dell’array utilizzando l’istruzione ReDim.
E questo è l’errore che abbiamo commesso nel codice precedente e VBA ha restituito l’errore “Script fuori intervallo”.
Sub myMacro() Dim myArray() As Variant myArray(1) = "One" End Sub
Come correggere l’indice fuori intervallo in Excel?
Il modo migliore per gestire questo indice fuori intervallo è scrivere codici efficienti e assicurarsi di eseguire il debug del codice che hai scritto (passo dopo passo).
Quando esegui un codice passo dopo passo, è facile per te sapere in quale riga di quel codice è presente un errore perché VBA ti mostrerà il messaggio di errore per l’errore 9 ed evidenzierà quella riga in giallo.
L’altra cosa che puoi fare è utilizzare un “gestore di errori” per passare a una riga di errore specifica quando si verifica.
Nel codice seguente abbiamo scritto una riga per attivare il foglio ma prima abbiamo utilizzato l’istruzione goto per passare al gestore degli errori. Nel gestore degli errori hai una finestra di messaggio che mostra un messaggio con Err. Descrizione che si è verificato un errore.
Pertanto, quando esegui questo codice e “Foglio1” non è nella cartella di lavoro in cui stai tentando di attivarlo. Ti mostrerà una finestra di messaggio come quella sotto.
E se il “Foglio1” è presente, non ci sarà alcun messaggio.
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