V Excelu možná pracujete s daty, která jsou tak citlivá, že je budete chtít uložit pokaždé, když se změní konkrétní buňka nebo rozsah buněk. Toto makro umožňuje definovat rozsah buněk, které při změně vynutí uložení sešitu.
V zobrazeném příkladu chcete, aby se sešit uložil při úpravě kterékoli z buněk v rozsahu C5:C16.
Změna buňky v C5:C16 vynutí uložení sešitu.
Jak makro funguje
Tajemstvím tohoto kódu je metoda Intersect. Protože nechcete uložit list při změně staré buňky, použijte metodu Intersect k určení, zda se cílová buňka (buňka, která se změnila) protíná s rozsahem zadaným jako rozsah spouštění (v tomto případě C5:C16) .
Metoda Intersect vrací jednu ze dvou věcí: objekt Range, který definuje průsečík mezi dvěma danými rozsahy, nebo nic. Takže v podstatě musíte hodit cílovou buňku proti metodě Intersect, abyste zkontrolovali hodnotu Nothing. V tomto okamžiku se můžete rozhodnout, zda sešit uložíte.
Private Sub Worksheet_Change (ByVal Target As Range)
'Krok 1: Protíná se změněný rozsah?
If Intersect(Target, Range("C5:C16")) Is Nothing Then
„Krok 2: Pokud neexistuje žádná křižovatka, opusťte postup
Exit Sub
'Krok 3: Pokud existuje průsečík, uložte sešit
Jiný
Aktivní sešit.Uložit
'Krok 4: Zavřete příkaz If
End If
End Sub
V kroku 1 jednoduše zkontrolujete, zda je cílová buňka (buňka, která se změnila) v rozsahu určeném metodou Intersect. Hodnota Nic znamená, že cílová buňka je mimo zadaný rozsah.
Krok 2 vynutí zastavení makra a ukončení procedury, pokud neexistuje průsečík mezi cílovou buňkou a zadaným rozsahem.
Pokud existuje průsečík, krok 3 spustí metodu Uložit aktivního sešitu, čímž přepíše předchozí verzi.
V kroku 4 jednoduše zavřete příkaz If. Pokaždé, když spustíte kontrolu If-Then-Else, musíte ji ukončit odpovídajícím End If.
Jak používat makro
Chcete-li implementovat toto makro, musíte jej zkopírovat a vložit do okna kódu události Worksheet_Change. Umístěním makra sem umožníte jeho spuštění pokaždé, když na listu provedete jakoukoli změnu:
Aktivujte Editor jazyka Visual Basic stisknutím Alt+F11.
V okně projektu vyhledejte název projektu/sešitu a kliknutím na znaménko plus vedle něj zobrazte všechny listy.
Klikněte na list, ze kterého chcete spustit kód.
V rozevíracím seznamu Událost vyberte Změnit událost.
Zadejte nebo vložte kód do nově vytvořeného modulu a změňte adresu rozsahu tak, aby vyhovovala vašim potřebám.
Zadejte svůj kód do události Změna listu.