Sommario:
Video: EM146 Come salvare e chiudere tutte le cartelle di lavoro di Excel con una scorciatoia 2024
La macro presentata qui è un ottimo modo per proteggere gli utenti dal chiudere inavvertitamente il loro file prima di salvare. Quando implementata, questa macro assicura che Excel salvi automaticamente la cartella di lavoro prima di chiuderla.
Excel normalmente avviserà gli utenti che stanno tentando di chiudere una cartella di lavoro non salvata, offrendo loro un'opzione per il salvataggio prima della chiusura. Tuttavia, molti utenti potrebbero ignorare l'avviso e inavvertitamente fare clic su No, dicendo a Excel di chiudere senza salvare. Con questa macro, stai proteggendo da ciò salvando automaticamente prima della chiusura.
Come funziona la macro
Il codice viene attivato dall'evento BeforeClose della cartella di lavoro. Quando si tenta di chiudere la cartella di lavoro, questo evento si attiva, eseguendo il codice all'interno. Il punto cruciale del codice è semplice: chiede agli utenti se vogliono chiudere la cartella di lavoro. La macro quindi valuta se l'utente ha fatto clic su OK o Annulla.
La valutazione viene eseguita con un'istruzione Select Case. L'istruzione Select Case è un'alternativa all'istruzione If-Then-Else, che consente di eseguire controlli di condizione nei propri macro. Il costrutto di base di un'istruzione Select Case è semplice:
Seleziona caso maiuscolo = caso è = caso è = fine Seleziona
Con un'istruzione Select Case, puoi eseguire molti controlli condizionali. In questo caso, stai semplicemente controllando OK o Annulla. Dai un'occhiata al codice:
Private Sub Workbook_BeforeClose (Annulla come booleano) 'Passaggio 1: attiva la finestra del messaggio e avvia il controllo Seleziona caso MsgBox ("Salva e chiudi?", VbOKCancel) "Passaggio 2: pulsante Annulla premuto, quindi annulla la chiusura Case Is = vbCancel Cancel = True 'Passaggio 3: pulsante OK premuto, quindi salva la cartella di lavoro e chiudi Case Is = vbOK ActiveWorkbook. Salva 'Passaggio 4: Chiudi l'istruzione Select Case End Select End Sub
Al punto 1, si attiva la finestra di messaggio come controllo condizione per l'istruzione Select Case. Si utilizza l'argomento vbOKCancel per assicurarsi che i pulsanti OK e Annulla siano presentati come scelte.
Nel passaggio 2, se l'utente ha fatto clic su Annulla nella finestra del messaggio, la macro dice a Excel di annullare l'evento Workbook_Close passando True a Cancel Boolean.
Se l'utente ha fatto clic sul pulsante OK nella finestra del messaggio, il passaggio 3 ha effetto. Qui, si dice a Excel di salvare la cartella di lavoro. E poiché non hai impostato Annulla booleano su True, Excel continua con la chiusura.
Al punto 4, si chiude semplicemente l'istruzione Select Case. Ogni volta che istanziate un Select Case, dovete chiuderlo con una End Select corrispondente.
Come utilizzare la macro
Per implementare questa macro, è necessario copiarla e incollarla nella finestra Codice evento Workbook_BeforeClose. Posizionando la macro in questa posizione è possibile eseguire ogni volta che si tenta di chiudere la cartella di lavoro:
-
Attiva Visual Basic Editor premendo Alt + F11.
-
Nella finestra del progetto, trovare il nome del progetto / cartella di lavoro e fare clic sul segno più accanto per visualizzare tutti i fogli.
-
Fai clic su ThisWorkbook.
-
Nell'elenco a discesa Evento, selezionare l'evento BeforeClose.
-
Digita o incolla il codice nel modulo appena creato.
Immettere il codice nell'evento Workbook BeforeClose.