V Exceli možno pracujete s údajmi, ktoré sú také citlivé, že ich budete chcieť uložiť pri každej zmene konkrétnej bunky alebo rozsahu buniek. Toto makro vám umožňuje definovať rozsah buniek, ktoré po zmene vynútia uloženie zošita.
V zobrazenom príklade chcete, aby sa zošit uložil, keď sa vykoná úprava ktorejkoľvek z buniek v rozsahu C5:C16.
Zmena bunky v C5:C16 vynúti uloženie zošita.
Ako funguje makro
Tajomstvom tohto kódu je metóda Intersect. Pretože nechcete uložiť pracovný hárok, keď sa zmení nejaká stará bunka, použijete metódu Intersect na určenie, či sa cieľová bunka (bunka, ktorá sa zmenila) pretína s rozsahom určeným ako rozsah spúšťača (v tomto prípade C5:C16) .
Metóda Intersect vracia jednu z dvoch vecí: objekt Range, ktorý definuje priesečník medzi dvoma danými rozsahmi, alebo nič. Takže v podstate musíte hodiť cieľovú bunku proti metóde Intersect, aby ste skontrolovali hodnotu Nič. V tomto bode sa môžete rozhodnúť, či zošit uložíte.
Private Sub Worksheet_Change (ByVal Target As Range)
„Krok 1: Pretína sa zmenený rozsah?
If Intersect(Target, Range("C5:C16")) je nič, potom
„Krok 2: Ak neexistuje žiadna križovatka, opustite postup
Ukončiť Sub
„Krok 3: Ak existuje križovatka, uložte zošit
Inak
ActiveWorkbook.Save
'Krok 4: Zatvorte príkaz If
Koniec Ak
End Sub
V kroku 1 jednoducho skontrolujete, či sa cieľová bunka (bunka, ktorá sa zmenila) nachádza v rozsahu určenom metódou Intersect. Hodnota Nič znamená, že cieľová bunka je mimo určeného rozsahu.
Krok 2 prinúti makro zastaviť a ukončiť procedúru, ak medzi cieľovou bunkou a zadaným rozsahom nie je priesečník.
Ak existuje priesečník, krok 3 spustí metódu Uložiť aktívneho zošita, čím prepíše predchádzajúcu verziu.
V kroku 4 jednoducho zatvoríte príkaz If. Zakaždým, keď spustíte kontrolu If-Then-Else, musíte ju ukončiť zodpovedajúcim End If.
Ako používať makro
Ak chcete implementovať toto makro, musíte ho skopírovať a prilepiť do okna kódu udalosti Worksheet_Change. Umiestnením makra sem umožníte jeho spustenie vždy, keď vykonáte akúkoľvek zmenu v hárku:
Aktivujte Editor jazyka Visual Basic stlačením Alt+F11.
V okne projektu nájdite názov projektu/zošita a kliknutím na znamienko plus vedľa neho zobrazte všetky hárky.
Kliknite na hárok, z ktorého chcete spustiť kód.
V rozbaľovacom zozname Udalosť vyberte možnosť Zmeniť udalosť.
Zadajte alebo prilepte kód do novovytvoreného modulu a zmeňte adresu rozsahu tak, aby vyhovovala vašim potrebám.
Zadajte svoj kód do udalosti Zmena pracovného hárka.