Per quanto bello possa sembrare guardare la tua macro VBA manipolare lo schermo, puoi aiutare la tua Macro a funzionare più velocemente se disattivi (disabiliti) ScreenUpdating.
Disattiva aggiornamento schermo
1. Per disabilitare ScreenUpdating, all'inizio del codice inserisci questa riga:
1 | Application.ScreenUpdating = False |
Abilita aggiornamento schermo
2. Per riattivare ScreenUpdating, alla fine del codice inserisci questa riga:
1 | Application.ScreenUpdating = True |
Esempio di aggiornamento dello schermo VBA
La tua procedura sarà quindi simile a questa:
1234567891011 | Sub ScreenUpdating_Example()Application.ScreenUpdating = False'Fare qualcosaIntervallo("a1"). Copia Intervallo("b1")Intervallo("a2"). Copia Intervallo("b2")Intervallo("a3"). Copia Intervallo("b3")Application.ScreenUpdating = TrueFine sottotitolo |
Aggiornamento schermo Aggiorna
La disabilitazione di ScreenUpdating renderà il tuo codice VBA MOLTO più veloce, ma renderà anche il tuo lavoro più professionale. Gli utenti finali in genere non vogliono vedere le azioni dietro le quinte delle procedure (soprattutto quando la procedura è lenta). Inoltre, potresti non volere che gli utenti finali vedano la funzionalità dietro le quinte (es. Fogli di lavoro nascosti). Consiglio di disabilitare (e riattivare) ScreenUpdating praticamente in tutte le tue procedure.
Tuttavia, ci sono alcune volte in cui desideri che lo schermo si aggiorni. Per aggiornare lo schermo, dovrai riattivare temporaneamente ScreenUpdating (non esiste un comando di "aggiornamento" dello schermo):
123 | Application.ScreenUpdating = True'Fare qualcosaApplication.ScreenUpdating = False |
Impostazioni VBA - Accelera il codice
Ci sono molte altre impostazioni con cui giocare per migliorare la velocità del codice.
La disattivazione dei calcoli automatici può fare una ENORME differenza di velocità:
1 | Applicazione.Calcolo = xlManuale |
Disabilitare la barra di stato farà anche una piccola differenza:
1 | Application.DisplayStatusBar = False |
Se la cartella di lavoro contiene eventi, di solito dovresti disabilitare gli eventi all'inizio della procedura:
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 disabilitare la visualizzazione delle interruzioni di pagina utilizzare questa riga di codice:
1 | ActiveSheet.DisplayPageBreaks = False |