Giovanni ha una macro “before_save” che testa tre celle. Se le celle sono vuote, la macro impedisce all’utente di salvare. In altre parole, devono compilare le celle prima di poter salvare la cartella di lavoro. Giovanni vorrebbe salvare questa cartella di lavoro come modello, ma quando cancella le tre celle, la macro gli impedisce anche di salvarla come modello. Vorrebbe che il modello fosse “pulito”, con le tre celle vuote come impostazione predefinita. Gli utenti creerebbero una nuova cartella di lavoro basata sul modello e quindi (correttamente) non sarebbero in grado di salvare a meno che le celle non vengano compilate. Giovanni si chiede come possa salvare la cartella di lavoro come modello, con le tre celle vuote.
In realtà esistono diversi approcci che potresti adottare per salvare il tuo modello.
Il primo è cambiare il nome della tua cartella di lavoro in qualcosa di piuttosto esoterico, come X27TT3W.xlsm. Quindi, aggiungi una logica alla macro “before_save” in modo che controlli se il nome della cartella di lavoro è X27TT3W. In tal caso, la macro dovrebbe consentire il salvataggio della cartella di lavoro (o del modello) indipendentemente dalle condizioni delle tre celle. Una volta salvato il modello, puoi rinominarlo in Windows con il nome desiderato e può essere condiviso con i tuoi utenti. A meno che non indovinino il nome esoterico che hai scelto, non potranno salvare la cartella di lavoro senza assicurarsi che le tre celle siano compilate.
Un altro approccio consiste nell’aggiungere semplicemente un altro gestore eventi alla cartella di lavoro, questo che venga eseguito quando si apre la cartella di lavoro per la prima volta, per cancellare il contenuto delle tre celle. Potrebbe essere qualcosa di semplice, come questo:
Private Sub Workbook_Open()
Foglio1.Cells(1,1).Clear
Foglio1.Cells(2,1).Clear
Foglio1.Cells(3,1).Clear
End Sub
Questa macro cancella le celle in A1:A3. Se vuoi che venga cancellato un intervallo diverso, cambia semplicemente le tre righe per riflettere le celle che vuoi cancellare. Quindi, inserisci qualcosa nelle tre celle (in modo che superi i test nella macro “before_save”) e salva la cartella come modello.
Questo approccio sarebbe da utilizzare solo se all’apertura della cartella di lavoro le tre celle debbano essere sempre vuote. Questo perché la macro Workbook_Open ne cancellerebbe il contenuto ad ogni apertura.
Un altro approccio molto semplice da implementare consiste nel disabilitare semplicemente gli eventi prima di salvare il modello. L’operazione non si esegue all’interno di una macro ma all’interno della finestra Immediata nel Visual Basic Editor. Tutto quello che devi fare è inserire questa singola riga:
Application.EnableEvents = False
Salva immediatamente la cartella di lavoro come modello, quindi immetti la seguente riga nella finestra immediata dell’editor di Visual Basic:
Application.EnableEvents = True