U Excelu možda radite na podacima koji su toliko osjetljivi da ćete ih poželjeti spremiti svaki put kada se promijeni određena ćelija ili raspon ćelija. Ova makronaredba vam omogućuje da definirate raspon ćelija koje, kada se promijene, prisiljava radnu knjigu na spremanje.
U prikazanom primjeru želite da se radna knjiga spremi kada se izvrši uređivanje u bilo kojoj od ćelija u rasponu C5:C16.
Promjena ćelije u C5:C16 prisiljava radnu knjigu na spremanje.
Kako makro funkcionira
Tajna ovog koda je metoda Intersect. Budući da ne želite spremiti radni list kada se promijeni neka stara ćelija, koristite metodu Intersect da biste utvrdili siječe li se ciljna ćelija (ćelija koja se promijenila) s rasponom navedenim kao raspon okidača (C5:C16 u ovom slučaju) .
Metoda Intersect vraća jednu od dvije stvari: objekt Range koji definira sjecište između dva zadana raspona ili ništa. Dakle, u biti, trebate baciti ciljnu ćeliju na Intersect metodu kako biste provjerili ima li vrijednost Nothing. U tom trenutku možete odlučiti hoćete li spremiti radnu knjigu.
Privatni pod radni list_Change(ByVal Target As Range)
'Korak 1: Presijeca li se promijenjeni raspon?
Ako je Intersect(Target, Range("C5:C16")) onda ništa
'Korak 2: Ako nema raskrižja, izađite
Izlaz pod
'Korak 3: Ako postoji raskrižje, spremite radnu knjigu
Drugo
ActiveWorkbook.Save
'Korak 4: Zatvorite naredbu If
Završi ako
Kraj Sub
U koraku 1 jednostavno provjerite je li ciljna ćelija (ćelija koja se promijenila) u rasponu navedenom metodom Intersect. Vrijednost Ništa znači da je ciljna ćelija izvan navedenog raspona.
Korak 2 prisiljava makronaredbu da zaustavi i izađe iz procedure ako ne postoji sjecište između ciljne ćelije i navedenog raspona.
Ako postoji raskrižje, korak 3 pokreće metodu Spremi aktivne radne knjige, prebrišući prethodnu verziju.
U 4. koraku jednostavno zatvorite naredbu If. Svaki put kada pokrenete provjeru If-Onda-Else, morate je zatvoriti odgovarajućim End If.
Kako koristiti makro
Da biste implementirali ovu makronaredbu, trebate je kopirati i zalijepiti u prozor koda događaja Worksheet_Change. Postavljanje makronaredbe ovdje omogućuje da se pokrene svaki put kada napravite bilo kakvu promjenu na listu:
Aktivirajte Visual Basic Editor pritiskom na Alt+F11.
U prozoru projekta pronađite naziv projekta/radne knjige i kliknite znak plus pored njega da biste vidjeli sve listove.
Kliknite list s kojeg želite pokrenuti kod.
Na padajućem popisu Događaj odaberite Promjena događaja.
Upišite ili zalijepite kod u novostvoreni modul, mijenjajući adresu raspona kako bi odgovarala vašim potrebama.
Unesite svoj kod u događaj Promjena radnog lista.