Roberto ha un foglio di lavoro con cui deve lavorare ogni venerdì. Questo foglio di lavoro è basato su un modello e ci sono almeno cinque celle che deve riempire, nell’intervallo C4:C8. Quando inizia con il foglio di lavoro, queste celle sono vuote. Roberto si chiede se c’è un modo per impedire che il foglio di lavoro venga salvato e/o chiuso finché non riempie tutte e cinque queste celle.
C’è un modo per farlo, ma implica l’uso di macro. Excel supporta il concetto di gestori di eventi, il che significa che puoi sviluppare macro che vengono eseguite automaticamente quando si verificano determinati eventi. Due eventi per i quali è possibile creare gestori di eventi speciali sono BeforeClose (ovvero prima della chiusura della cartella di lavoro) e BeforeSave (prima del salvataggio della cartella di lavoro).
Come esempio di come potrebbe funzionare, supponiamo che il foglio di lavoro contenente l’intervallo da controllare (C4:C8) sia denominato “MyData”. Puoi aggiungere questo codice 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)
Si noti che la macro si basa sulla funzione del foglio di lavoro CONTA.VUOTE (CountBlank) per determinare se sono presenti celle vuote nell’intervallo. Se rileva eventuali celle vuote (iCount è maggiore di 0), la macro visualizza un messaggio per l’utente e la variabile Cancel è impostata su True, che in realtà interrompe la chiusura della cartella di lavoro.
È possibile utilizzare una macro simile per l’evento BeforeSave, in questo modo:
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 volevi assicurarti che la routine selezionasse le celle in cui è necessario l’input (come passaggio finale), puoi aggiungere la seguente riga a entrambe le macro, subito dopo la riga che imposta la variabile Cancel su True:
rng.SpecialCells(xlCellTypeBlanks).Select
Ricorda, inoltre, che poiché la tua cartella di lavoro è basata su un modello, per funzionare correttamente dovrà essere salvata come modello abilitato per le macro.