Hi ha moments en què no voleu que un usuari tanqui un llibre d'Excel sense introduir una dada específica. En aquestes situacions, seria útil negar a l'usuari la possibilitat de tancar el llibre de treball fins que s'ompli la cel·la de destinació (com es mostra aquí). Aquí és on entra aquesta enginyosa macro.

Eviteu el tancament fins que s'ompli una cel·la específica.
Com funciona la macro
Aquest 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. Aquesta macro comprova si la cel·la objectiu (cel·la C7, en aquest cas) està buida. Si està buit, el procés de tancament es cancel·la. Si C7 no està buit, el llibre de treball es desa i es tanca:
Private Sub Workbook_BeforeClose (Cancel·la com a booleà)
"Pas 1: comproveu si la cel·la C7 està en blanc
Si Fulls("Full1").Range("C7").Valor = "Llavors
"Pas 2: si la cel·la està en blanc, cancel·leu el tancament i digueu a l'usuari
Cancel·la = Veritable
MsgBox "La cel·la C7 no pot estar en blanc"
"Pas 3: si la cel·la no està en blanc, deseu i tanqueu
Altrament
ActiveWorkbook.Close SaveChanges:=True
Acaba si
End Sub
El pas 1 comprova si C7 està en blanc.
Si C7 està en blanc, el pas 2 té efecte, cancel·lant el procés de tancament passant True al booleà Cancel·la. El pas 2 també activa un quadre de missatge que notifica a l'usuari de la seva estupidesa (bé, no és tan dur, realment).
Al pas 3, si la cel·la C7 no està en blanc, el llibre de treball es desa i es tanca.
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 aquí 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.

Introduïu el vostre codi a l'esdeveniment Workbook BeforeClose.