La macro que es presenta aquí és una manera excel·lent de protegir els usuaris de tancar el fitxer inadvertidament abans de desar-lo. Quan s'implementa, aquesta macro garanteix que Excel desi automàticament el llibre de treball abans de tancar-lo.
L'Excel normalment avisarà els usuaris que intentin tancar un llibre de treball no desat, donant-los l'opció de desar abans de tancar-lo. Tanmateix, és possible que molts usuaris superin l'avís i, sense voler, facin clic a No, dient a Excel que tanqui sense desar. Amb aquesta macro, esteu protegint contra això desant automàticament abans de tancar.
Com funciona la macro
El codi s'activa per l'esdeveniment BeforeClose del llibre de treball. Quan intenteu tancar el llibre de treball, aquest esdeveniment s'activa i executa el codi. El quid del codi és senzill: pregunta als usuaris si volen tancar el llibre de treball. Aleshores, la macro avalua si l'usuari ha fet clic a D'acord o a Cancel·la.

El missatge que veieu quan intenteu tancar el llibre de treball.
L'avaluació es fa amb una declaració Select Case. La instrucció Select Case és una alternativa a la instrucció If-Then-Else, que us permet realitzar comprovacions de condicions a les vostres macros. La construcció bàsica d'una instrucció Select Case és senzilla:
Seleccioneu Cas
El cas és =
El cas és=
El cas és=
Finalitzar la selecció
Amb una instrucció Select Case, podeu realitzar moltes comprovacions condicionals. En aquest cas, només esteu comprovant si hi ha D'acord o Cancel·la. Fes una ullada al codi:
Private Sub Workbook_BeforeClose (Cancel·la com a booleà)
"Pas 1: activeu el quadre de missatge i inicieu la comprovació
Seleccioneu Case MsgBox ("Desar i tancar?", vbOKCancel)
"Pas 2: el botó Cancel·la premut, així que cancel·leu el tancament
Cas és = vbCancel
Cancel·la = Veritable
"Pas 3: botó D'acord premut, així que deseu el llibre de treball i tanqueu-lo
El cas és = vbOK
ActiveWorkbook.Desa
"Pas 4: tanqueu la vostra declaració Select Case
Finalitzar la selecció
End Sub
Al pas 1, activeu el quadre de missatge com a comprovació de condicions per a la instrucció Select Case. Feu servir l'argument vbOKCancel per assegurar-vos que els botons D'acord i Cancel·la es presenten com a opcions.
Al pas 2, si l'usuari va fer clic a Cancel·la al quadre de missatge, la macro diu a Excel que cancel·li l'esdeveniment Workbook_Close passant True a Cancel Boolean.
Si l'usuari va fer clic al botó D'acord al quadre de missatge, el pas 3 es farà efectiu. Aquí, dieu a Excel que desi el llibre de treball. I com que no heu establert el booleà Cancel·la com a True, Excel continua amb el tancament.
Al pas 4, només heu de tancar la declaració Select Case. Cada vegada que inicieu un cas de selecció, heu de tancar-lo amb una selecció final corresponent.
Com utilitzar la macro
Per implementar aquesta macro, heu de copiar-la i enganxar-la a la finestra del codi d'esdeveniment Workbook_BeforeClose. Col·locar la macro allà permet que s'executi cada vegada que intenteu tancar el llibre de treball:
Activeu Visual Basic Editor prement Alt+F11.
A la finestra del projecte, cerqueu el nom del vostre projecte/llibre de treball i feu clic al signe més que hi ha al costat per veure tots els fulls.
Feu clic a Aquest llibre de treball.
A la llista desplegable Esdeveniment, seleccioneu l'esdeveniment Abans de tancar.
Escriviu o enganxeu el codi al mòdul acabat de crear.
![Una macro d'Excel per desar un llibre de treball abans de tancar-lo]()
Introduïu el vostre codi a l'esdeveniment Workbook BeforeClose.