Fredric ha scritto di un problema che stava avendo con una macro. Quando esegue la macro nell’editor VB utilizzando F8 (passando attraverso la macro), si completa in pochi minuti. Quando esegue la macro a titolo definitivo, sembra che ci voglia un’eternità per l’esecuzione, spesso impiegando 20 minuti o più per l’esecuzione. Anche se la cartella di lavoro di Fredric è grande (46 MB), la differenza di tempo tra i due metodi di esecuzione è fastidiosa.

Problemi come questo possono essere sconcertanti e spesso richiedono analisi pesanti per capirlo. Un buon punto di partenza è aggiungere un po ‘di “codice timer” nella macro. Aggiungi una piccola routine che salva un valore temporale e un’altra routine che confronta il valore salvato con l’ora corrente e visualizza la differenza. All’inizio di una sezione di codice che vuoi analizzare, chiami la prima routine (che salva l’ora di inizio)

e poi alla fine della sezione di codice chiamate la seconda routine.

In questo modo, puoi determinare quali parti del tuo codice impiegano più tempo per essere eseguite. Queste sono le sezioni di codice su cui ti concentri, quindi puoi capire cosa stanno facendo che sta impiegando così tanto tempo.

Un’altra cosa da accertarsi è di aggiungere queste due righe all’inizio della macro:

Application.ScreenUpdating = False Application.EnableEvents = False

Questi disattivano l’aggiornamento dello schermo, che può rallentare una macro in esecuzione e disabilitare gli eventi. Quest’ultima riga è inclusa in modo che le modifiche apportate dalla macro nel foglio di lavoro non attivino le routine di ricalcolo di Excel. Se la tua macro sta apportando molte modifiche ai dati nel foglio di lavoro e viene attivato un ricalcolo completo dopo ogni modifica, con una cartella di lavoro così grande, è possibile dedicare molto tempo solo al ricalcolo. Alla fine della tua macro, inverti l’effetto delle due linee che hai aggiunto:

Application.EnableEvents = True Application.ScreenUpdating = True

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2436) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: