Davide ha la necessità, in un foglio di lavoro, di disattivare il calcolo automatico all’apertura del foglio di lavoro. Quindi, deve limitare il numero di volte in cui il foglio di lavoro può essere calcolato (utilizzando F9) fino a un massimo di 3 volte.
È possibile farlo, utilizzando le macro, basate sulla cartella di lavoro. Tutto quello che devi fare è scrivere una macro che disattivi il calcolo automatico e quindi esegua del codice ogni volta che si verifica il calcolo. Inizia aggiungendo questa singola riga a un modulo nella cartella di lavoro:
Global iCalcCount As Integer
Poiché questa riga non appare all’interno di una procedura, definisce una variabile che sarà disponibile a livello globale. Verrà utilizzata per tenere il conto del numero di volte in cui il calcolo si verifica nella cartella di lavoro.
Ora devi aggiungere tre macro (tutti gestori di eventi) al modulo Questa_cartella_di_lavoro:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Due di queste macro si attivano quando la cartella di lavoro viene aperta e quando viene chiusa. Nella macro Workbook_Open, le due righe di codice disattivano il calcolo automatico e disattivano anche il calcolo che si verifica normalmente ogni volta che si salva la cartella di lavoro (ciò è necessario affinché uno dei ricalcoli “consentiti” dell’utente non si verifichi per errore durante il salvataggio della cartella di lavoro). Queste impostazioni di configurazione vengono annullate quando viene eseguito il gestore dell’evento Workbook_BeforeClose.
Il cavallo di battaglia in questo approccio è il gestore dell’evento Workbook_SheetCalculate. Questo viene eseguito, automaticamente, ogni volta che il foglio di lavoro viene ricalcolato. Poiché il ricalcolo automatico e il ricalcolo durante il salvataggio sono stati disattivati, ciò significa che l’evento Workbook_SheetCalculate si verifica solo quando l’utente fa qualcosa per forzare il calcolo, come premere F9 o fare clic su uno strumento che esegue il ricalcolo. Anche se l’utente attiva manualmente il ricalcolo automatico, l’evento Workbook_SheetCalculate verrà comunque attivato.
L’evento Workbook_SheetCalculate incrementa il contatore iCalcCount e, se è maggiore di 2, utilizza il metodo .OnKey per disabilitare F9. Naturalmente, l’utente può ancora utilizzare uno degli strumenti integrati per provare a ricalcolare (come lo strumento Calcola sulla barra di stato), ma ciò non comporterebbe comunque il ricalcolo del foglio di lavoro.