Disattiva (o attiva) i calcoli automatici - Esempi di codice VBA

Ogni volta che aggiorni un valore di cella, Excel esegue un processo per ricalcolare la cartella di lavoro. Quando si lavora direttamente all'interno di Excel, si desidera che ciò accada il 99,9% delle volte (l'eccezione è se si lavora con una cartella di lavoro estremamente grande). Tuttavia, questo può davvero rallentare il tuo codice VBA. È buona norma impostare i calcoli su manuale all'inizio delle macro e ripristinare i calcoli alla fine delle macro. Se è necessario ricalcolare la cartella di lavoro, è possibile indicare manualmente a Excel di eseguire il calcolo.

Disattiva i calcoli automatici

Puoi disattivare il calcolo automatico con una macro impostandolo su xlmanual. Usa il seguente pezzo di codice VBA:

1 Applicazione.Calcolo = xlManuale

Riattiva i calcoli automatici

Per riattivare il calcolo automatico con l'impostazione xlAutomatico:

1 Applicazione.Calcolo = xlAutomatico

Consiglio di disabilitare i calcoli automatici all'inizio della procedura e di riattivare i calcoli automatici alla fine. Apparirà così:

Disabilitare l'esempio di macro dei calcoli automatici

12345678 Sub Auto_Calcs_Example()Applicazione.Calcolo = xlManuale'Fare qualcosaApplicazione.Calcolo = xlAutomaticoFine sottotitolo

Calcolo manuale

Quando i calcoli automatici sono disattivati, è possibile utilizzare il Calcolare comando per forzare il ricalcolo di Excel:

1 Calcolare

Puoi anche dire a Excel di ricalcolare solo un singolo foglio di lavoro:

1 Fogli di lavoro("foglio1").Calcola

Puoi anche dire a VBA di ricalcolare solo un intervallo (fai clic per leggere il nostro articolo sui metodi di calcolo VBA)

Ecco come potrebbe apparire all'interno di una macro:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc()Applicazione.Calcolo = xlManuale'Fare qualcosa"Ricalca"Calcolare"Fai più cose"Applicazione.Calcolo = xlAutomaticoFine sottotitolo

Impostazioni VBA - Accelera il codice

Se il tuo obiettivo è velocizzare il codice, dovresti anche considerare di modificare queste altre impostazioni:

La disabilitazione dell'aggiornamento dello schermo può fare un'enorme differenza in termini di velocità:

1 Application.ScreenUpdating = False

Anche la disattivazione della barra di stato farà una piccola differenza:

1 Application.DisplayStatusBar = False

Se la tua cartella di lavoro contiene eventi dovresti anche disabilitare gli eventi all'inizio delle tue procedure (per velocizzare il codice e prevenire cicli infiniti!):

1 Application.EnableEvents = False

Infine, il codice VBA può essere rallentato quando Excel tenta di ricalcolare le interruzioni di pagina (Nota: non tutte le procedure saranno interessate). Per disattivare DisplayPageBreaks usa questa riga di codice:

1 ActiveSheet.DisplayPageBreaks = False

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave