Questo tutorial spiegherà l'errore di memoria esaurita VBA.
L'errore VBA Out of Memory si verifica quando Excel ha utilizzato tutte le risorse della macchina durante l'esecuzione di una macro e ha letteralmente esaurito la memoria per continuare a calcolare o eseguire il codice. Ciò potrebbe verificarsi quando sono in esecuzione molte applicazioni e si tenta di eseguire una macro di grandi dimensioni in Excel o forse quando si è creato un ciclo perpetuo in Excel per errore.
(Vedi la nostra Guida alla gestione degli errori per ulteriori informazioni sugli errori VBA)
Cause di errore di memoria insufficiente
Può verificarsi un errore di memoria insufficiente se si sta lavorando con una cartella di lavoro che contiene molti fogli di lavoro e migliaia di righe. Se creiamo un ciclo che funziona con un grande volume di dati, potrebbe verificarsi un errore di memoria insufficiente. Potrebbe anche verificarsi se stiamo lavorando con più oggetti e impostiamo ogni oggetto con un'istruzione SET, ma poi non cancelliamo i riferimenti agli oggetti tra procedure o cicli.
Ad esempio, il seguente ciclo potrebbe sicuramente causare un errore di memoria se hai più file aperti con più fogli.
1234567891011121314 | Memoria di prova secondaria()Dim wb come cartella di lavoroDim ws come foglio di lavoroDim io come singlePer ogni wb in Application.WorkbooksPer ogni ws In wb.FogliEsegui fino a ActiveCell = "A1048576"ActiveCell = 1 + iio = io + 1ActiveCell.Offset(1, 0).SelezionaCiclo continuoAvanti wwb successivoFine sottotitolo |
Prevenzione di un errore di memoria insufficiente
Rilascia oggetti
Se stiamo lavorando con loop e oggetti, dobbiamo assicurarci di impostare l'oggetto su NIENTE una volta che è stato utilizzato e non è più necessario: questo rilascerà memoria.
Programmazione VBA | Il generatore di codice funziona per te!
Assicurati che sia in esecuzione solo un'istanza di Excel
Se stiamo lavorando con file di grandi dimensioni e grandi quantità di dati, controlla di non avere più sessioni di Excel aperte: deve essere aperto solo una volta. Un modo per verificarlo è andare al Task Manager e vedere quante istanze di Excel sono in esecuzione.
premere Ctl+Alt+Canc sulla tastiera,
Clicca su Task Manager e assicurati che sia in esecuzione una sola istanza di Excel. Nel grafico sottostante, c'è un'istanza, con 2 finestre.
Possiamo anche controllare nel Task Manager che non ci siano istanze di Excel in esecuzione in background (cioè non visibili).
Scorri verso il basso nel Task Manager finché non vedi Processi in background e assicurati che Excel non sia in quell'elenco di programmi.
Controlla la dimensione del tuo file Excel
Spesso ci sono righe e colonne a cui è stato effettuato l'accesso al di sotto di quelle nei fogli di lavoro effettivamente utilizzate. Excel utilizza la memoria in queste celle, anche se quelle celle sono vuote. Controlla la dimensione del file premendo CTRL+MAIUSC+FINE sulla tastiera per vedere dove si ferma il puntatore della cella. Se arriva ben al di sotto dell'ultima cella che stai utilizzando, assicurati di eliminare tutte le righe e le colonne vuote sopra il puntatore della cella e quindi salva nuovamente il file: questo ridurrà le dimensioni del tuo file Excel.
Altri modi per controllare la memoria
Esistono vari altri modi per liberare memoria in Excel. Una buona idea è chiudere Excel se non lo si utilizza e quindi aprirlo in un secondo momento: questo libererà tutta la memoria che Excel sta memorizzando poiché tende a memorizzare memoria anche quando una cartella di lavoro non è aperta! Assicurati sempre che la tua versione di Office sia aggiornata controllando gli aggiornamenti sul tuo PC e controlla eventuali componenti aggiuntivi VBA che potrebbero essere utilizzati, ma che non stai utilizzando: puoi disinstallarli per liberare ancora più memoria.