Molti utenti hanno segnalato di aver riscontrato l’errore “Subscript out of range” (errore di runtime 9) quando utilizzano codice VBA in Excel. L’errore si verifica spesso quando l’oggetto a cui si fa riferimento nel codice non è disponibile, è stato eliminato o non è stato definito in precedenza. A volte si verifica se si è dichiarato un array nel codice ma si è dimenticato di specificare l’istruzione DIM o ReDIM per definire la lunghezza dell’array.
Cause dell’errore di runtime VBA 9: pedice fuori dall’intervallo
L’errore “Sottoscritto fuori dall’intervallo” in Excel può verificarsi per diversi motivi, ad esempio:
- L’oggetto che si sta cercando di utilizzare nel codice VBA non è stato definito in precedenza o è stato eliminato.
- È stata inserita una sintassi di dichiarazione errata dell’array.
- Errore di ortografia del nome della variabile.
- Riferimento a un elemento errato dell’array.
- È stato inserito un nome errato del foglio di lavoro a cui si sta cercando di fare riferimento.
- Il foglio di lavoro che si sta cercando di richiamare nel codice non è disponibile.
- È stato specificato un elemento non valido.
- Non specificato il numero di elementi di una matrice.
- La cartella di lavoro in cui si sta cercando di utilizzare VBA è danneggiata.
Metodi per risolvere l’errore VBA di Excel ‘Subscript out of Range’ (pedice fuori dall’intervallo)
Di seguito sono riportate alcune soluzioni per risolvere l’errore di runtime 9 in Excel.
Metodo 1: controllare il nome del foglio di lavoro nel codice
A volte, Excel lancia l’errore di runtime 9: Subscript out of range se il nome del foglio di lavoro non è definito correttamente nel codice. Ad esempio, quando si cerca di copiare il contenuto da un foglio di Excel (emp) a un altro foglio (emp2) tramite il codice VBA, è stato erroneamente indicato un nome sbagliato del foglio di lavoro (vedere il codice seguente).
Private Sub CommandButton1_Click() Worksheets(“emp”).Range(“A1:E5”).Select Selection.Copy Worksheets(“emp3”).Activate Worksheets(“emp3”).Range(“A1:E5”).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub |

Quando si esegue il codice di cui sopra, Excel lancia l’errore Subscript out of range.
Quindi, controllate il nome del foglio di lavoro e correggetelo. Ecco i passaggi:
- Andare alla scheda Progettazione nella sezione Sviluppatore.
- Fare doppio clic sul pulsante Comando.
- Controllare e modificare il nome del foglio di lavoro (ad esempio, da “emp” a “emp2”).

- Ora eseguite il codice.
- Il contenuto del foglio di lavoro ’emp’ verrà copiato in ’emp2′ (vedere sotto).

Metodo 2: controllare l’intervallo della matrice
L’errore VBA “Subscript out of range” si verifica anche se in un codice è stato dichiarato un array ma non è stato specificato il numero di elementi. Ad esempio, se si è dichiarato un array e si è dimenticato di dichiarare la variabile array con gli elementi, si otterrà l’errore (vedere sotto):

Per risolvere il problema, specificare la variabile array:
Sub FillArray() Dim curExpense(364) Come valuta Dim intI As Integer For intI = 0 to 364 curExpense(intI) = 20 Next Fine Sub |
Metodo 3: modificare le impostazioni di sicurezza della macro
L’errore di runtime 9: Subscript out of range può verificarsi anche se c’è un problema con le macro o se le macro sono disabilitate nelle Impostazioni di sicurezza macro. In questo caso, è possibile controllare e modificare le impostazioni delle macro. Procedere come segue:
- Aprire Microsoft Excel.
- Accedere a File > Opzioni > Centro fiduciario.
- In Centro fiduciario, selezionare Impostazioni centro fiduciario.
- Fare clic su Impostazioni macro, selezionare Abilita tutte le macro, quindi fare clic su OK.

Metodo 4: Riparare il file Excel
Il nome o il formato del file Excel o il nome degli oggetti possono essere cambiati a causa della corruzione del file. Quando gli oggetti non sono identificati in un codice VBA, si può verificare l’errore Subscript out of range. È possibile utilizzare l’utilità Apri e ripara di Excel per riparare il file danneggiato. Per utilizzare questa utility, seguite i seguenti passaggi:
- In MS Excel, fare clic su File > Apri.
- Cercare la posizione in cui è memorizzato il file interessato.
- Nella finestra di dialogo Apri, selezionare la cartella di lavoro danneggiata.
- Nel menu a tendina Apri, fare clic su Apri e ripara.
- Verrà visualizzato un messaggio che chiede di riparare il file o di estrarre i dati da esso.
- Fare clic sull’opzione Ripara per estrarre i dati il più possibile. Se il pulsante Ripara non riesce, fare clic sul pulsante Estrai per recuperare i dati senza formule e valori.
Se l’utilità “Apri e ripara” non riesce a riparare il file Excel corrotto/danneggiato con macro, provare uno strumento di riparazione Excel avanzato, come Stellar Repair for Excel. Può facilmente riparare una cartella di lavoro Excel gravemente danneggiata e recuperare tutti gli elementi, comprese le macro, i commenti delle celle, le tabelle, i grafici, ecc. con il 100% di integrità. Lo strumento è compatibile con tutte le versioni di Microsoft Excel.
Conclusione
È possibile che si verifichi l’errore “Subscript out of range” durante l’utilizzo di VBA in Excel. Per risolvere l’errore è possibile seguire le soluzioni discusse in questo blog. Se il file Excel è danneggiato, è possibile utilizzare Stellar Repair for Excel per riparare il file. È un software potente che può aiutare a risolvere tutti i problemi che si verificano a causa della corruzione del file Excel. Aiuta a recuperare tutti i dati dai file Excel corrotti (.xls, .xlsx, .xltm, .xltx e .xlsm) senza modificare la formattazione originale. Lo strumento supporta Excel 2021, 2019, 2016 e versioni precedenti.
Was this article helpful?