A Excel, és possible que estigueu treballant en dades tan sensibles que voldreu desar cada vegada que es canviï una cel·la o un rang de cel·les concrets. Aquesta macro us permet definir un rang de cel·les que, quan es canvia, obliga a desar el llibre de treball.
A l'exemple mostrat, voleu que el llibre de treball es desi quan es fa una edició a qualsevol de les cel·les de l'interval C5:C16.

Canviar una cel·la a C5:C16 obliga a desar el llibre de treball.
Com funciona la macro
El secret d'aquest codi és el mètode Intersect. Com que no voleu desar el full de treball quan canvia cap cel·la antiga, utilitzeu el mètode Intersect per determinar si la cel·la objectiu (la cel·la que ha canviat) es talla amb l'interval especificat com a interval d'activació (C5:C16 en aquest cas). .
El mètode Intersect retorna una d'aquestes dues coses: un objecte Range que defineix la intersecció entre els dos rangs donats, o res. Per tant, en essència, heu de llançar la cel·la objectiu contra el mètode Intersect per comprovar si hi ha un valor de Nothing. En aquest moment, podeu decidir si voleu desar el llibre de treball.
Private Sub Worksheet_Change(ByVal Target As Range)
"Pas 1: l'interval canviat es creua?
Si Intersect(Target, Range("C5:C16")) no és res, aleshores
"Pas 2: si no hi ha intersecció, procediment de sortida
Sortir de Sub
"Pas 3: si hi ha una intersecció, deseu el llibre de treball
Altrament
ActiveWorkbook.Desa
"Pas 4: tanqueu la declaració If
Acaba si
End Sub
Al pas 1, simplement comproveu si la cel·la objectiu (la cel·la que ha canviat) es troba dins l'interval especificat pel mètode Intersect. Un valor de Nothing significa que la cel·la objectiu està fora de l'interval especificat.
El pas 2 obliga la macro a aturar-se i sortir del procediment si no hi ha cap intersecció entre la cel·la objectiu i l'interval especificat.
Si hi ha una intersecció, el pas 3 activa el mètode Desa del llibre de treball actiu, sobreescrivint la versió anterior.
Al pas 4, simplement tanqueu la declaració If. Cada vegada que inicieu una comprovació If-Then-Else, l'heu de tancar amb un End If corresponent.
Com utilitzar la macro
Per implementar aquesta macro, heu de copiar-la i enganxar-la a la finestra del codi d'esdeveniment Worksheet_Change. Col·locar la macro aquí permet que s'executi cada vegada que feu qualsevol canvi al full:
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 al full des del qual voleu activar el codi.
A la llista desplegable Esdeveniment, seleccioneu l'esdeveniment Canvia.
Escriviu o enganxeu el codi al mòdul acabat de crear, canviant l'adreça del rang segons les vostres necessitats.

Introduïu el vostre codi a l'esdeveniment Canvi de full de treball.