Calcola VBA: ora, cartella di lavoro, foglio di lavoro o intervallo

Questo tutorial ti insegnerà tutte le diverse opzioni di calcolo in VBA.

Per impostazione predefinita, Excel calcola tutte le cartelle di lavoro aperte ogni volta che viene apportata una modifica alla cartella di lavoro. Lo fa seguendo un albero di calcolo in cui se la cella A1 viene modificata, aggiorna tutte le celle che si basano sulla cella A1 e così via. Tuttavia, questo può causare l'esecuzione del codice VBA estremamente lentamente, poiché ogni volta che una cella cambia, Excel deve ricalcolare.

Per aumentare la velocità di VBA, spesso vorrai disabilitare i calcoli automatici all'inizio delle tue procedure:

1 Applicazione.Calcolo = xlManuale

e riabilitarlo alla fine:

1 Applicazione.Calcolo = xlAutomatico

Tuttavia, cosa succede se si desidera calcolare tutte (o parte) delle cartelle di lavoro all'interno della procedura? Il resto di questo tutorial ti insegnerà cosa fare.

Calcola ora

Puoi utilizzare il comando Calcola per ricalcolare tutto (in tutte le cartelle di lavoro aperte):

1 Calcolare

Questo è di solito il metodo migliore da usare. Tuttavia, puoi anche eseguire calcoli più ristretti per migliorare la velocità.

Calcola solo foglio

Puoi anche dire a VBA di calcolare solo un foglio specifico.

Questo codice ricalcolerà il foglio attivo:

1 ActiveSheet.Calculate

Questo codice ricalcolerà Foglio1:

1 Fogli("Foglio1").Calcola

Calcola intervallo

Se hai bisogno di un calcolo più ristretto, puoi dire a VBA di calcolare solo un intervallo di celle:

1 Fogli("Foglio1").Intervallo("a1:a10").Calcola

Calcola Formula Individuale

Questo codice calcolerà solo una singola formula di cella:

1 Intervallo ("a1"). Calcola

Calcola cartella di lavoro

Non esiste un'opzione VBA per calcolare solo un'intera cartella di lavoro. Se è necessario calcolare un'intera cartella di lavoro, l'opzione migliore è utilizzare il comando Calcola:

1 Calcolare

Questo calcolerà tutte le cartelle di lavoro aperte. Se sei davvero preoccupato per la velocità e desideri calcolare un'intera cartella di lavoro, potresti essere più selettivo su quali cartelle di lavoro sono aperte contemporaneamente.

Calcola la cartella di lavoro - Metodi che non funzionano

Esistono un paio di metodi che potresti essere tentato di utilizzare per forzare VBA a calcolare solo una cartella di lavoro, tuttavia nessuno di essi funzionerà correttamente.

Questo codice scorrerà ogni foglio di lavoro nella cartella di lavoro e ricalcolerà i fogli uno alla volta:

1234567 Sotto Ricalcola_Cartella di lavoro()Dim ws come foglio di lavoroPer ogni ws nei fogli di lavorows.CalcolaAvanti wFine sottotitolo

Questo codice funzionerà correttamente se tutti i tuoi fogli di lavoro sono "autonomi", il che significa che nessuno dei tuoi fogli contiene calcoli che fanno riferimento ad altri fogli.

Tuttavia, se i fogli di lavoro fanno riferimento ad altri fogli, i calcoli potrebbero non essere aggiornati correttamente. Ad esempio, se si calcola Foglio1 prima di Foglio2, ma le formule di Foglio1 si basano sui calcoli eseguiti in Foglio2, le formule non conterranno i valori più aggiornati.

Potresti anche provare a selezionare tutti i fogli contemporaneamente e calcolare il foglio attivo:

12 ThisWorkbook.Sheets.SelectActiveSheet.Calculate

Tuttavia, questo causerà lo stesso problema.

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

wave wave wave wave wave