A seguito di ulteriori richieste, andiamo ad approfondire il tema affrontato in un precedente articolo.
Roberto ha una cartella di lavoro che richiede l’uso di riferimenti circolari, che può configurare perfettamente in Excel. Dopo aver protetto e inviato tramite posta elettronica la cartella di lavoro ai colleghi, al momento dell’utilizzo, la funzionalità iterativa (richiesta per i riferimenti circolari) viene disattivata e il foglio di lavoro non riesce a causa di errori di riferimento circolare. Roberto si chiede se esista un modo per impostare la cartella di lavoro in modo che i riferimenti circolari siano abilitati per impostazione predefinita quando viene caricata dai suoi colleghi.
L’unico modo per assicurarsi che nelle cartelle di lavoro dei colleghi siano abilitati i riferimenti circolari è aggiungere una macro alla cartella di lavoro. La macro è in realtà lunga solo una riga e ti consigliamo di assicurarti di aggiungerla al modulo Questa_cartella_di_lavoro:
Private Sub Workbook_Open()
Application.Iteration = True
End Sub
La macro viene eseguita ogni volta che viene aperta la cartella di lavoro e attiva l’impostazione dei riferimenti circolari.
Ci sono un paio di cose da ricordare quando si tratta di far sì che funzioni effettivamente per i tuoi colleghi. Innanzitutto, la tua cartella di lavoro dovrà essere salvata in una versione “abilitata per le macro”, ovvero avrà l’estensione XLSM. Se i tuoi colleghi disabilitano le macro, in modo esplicito all’apertura della cartella di lavoro o implicitamente tramite le impostazioni del Centro protezione che hanno configurato in Excel, la macro potrebbe non essere eseguita all’apertura della cartella di lavoro. In tali situazioni, questi colleghi riceveranno comunque gli errori di riferimento circolare.
La seconda cosa da ricordare è che l’abilitazione dell’impostazione del riferimento circolare (tramite questa macro o manualmente) influirà non solo sui calcoli sulla cartella di lavoro, ma su qualsiasi cartella di lavoro che i tuoi colleghi potrebbero avere aperta. Ciò non dovrebbe causare grossi problemi, ma è comunque una buona cosa da tenere a mente.
Potresti anche voler aggiungere una macro per disattivare l’impostazione relativa ai riferimenti circolari quando la cartella di lavoro viene chiusa. Anche questo dovrebbe essere aggiunto al modulo Questa_cartella_di_lavoro:
Private Sub Workbook_Close()
Application.Iteration = False
End Sub
Questa macro dovrebbe in realtà essere considerata facoltativa e potresti voler considerare se vuoi davvero includerla o meno. Se i tuoi colleghi normalmente lavorano con l’impostazione dei riferimenti circolari abilitata, la macro Workbook_Open non interferirà davvero con il modo in cui utilizzano Excel. Tuttavia, se viene rilevata la macro Workbook_Close, verrà disattivata l’impostazione dei riferimenti circolari e potrebbe interferire con il modo in cui utilizzano qualsiasi altra cartella di lavoro che richieda riferimenti circolari.
Questa è una di quelle situazioni in cui potrebbe valere la pena “catturare” lo stato originale dei riferimenti circolari e reimpostarlo alla chiusura. Quindi il modulo Questa_cartella_di_lavoro sarebbe simile a questo:
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)
Se esiste la possibilità di avere altre cartelle di lavoro aperte che devono avere i riferimenti circolari disabilitati, è possibile utilizzare gli eventi Activate e Deactivate invece di Open e Close.