Michelle se ptá,
Myslím, že jsem na správné cestě s kruhovým odkazem. Tady je můj problém. Mám dvě buňky
A1=5
aB1=5
. To, co chci udělat, je nechat si B1 zapamatovat 5 a pak chci přidat novou hodnotu do A1, řekněme, že A1 se nyní rovná 10. Mohu mít vzorec B1, který si zapamatuje 5, ale také přidá 10? Takže teďB1=15
?
Kruhové odkazy jsou obvykle špatná věc, ale někdy je lze využít k naší výhodě. Tady je jiný způsob makra, jak dělat to, co chcete dělat. Bude to fungovat pouze v určitých situacích.
- V nabídce Excel vyberte Nástroje> Možnosti.
- Přejděte na kartu Výpočet. Zaškrtněte políčko u iterací. Změňte maximální iterace na 1.
- Kliknutím na OK zavřete dialogové okno možností.
- Do buňky A1 zadejte 5.
- Do buňky B1 zadejte 0
- Zadejte
=A1+B1
do buňky B1 - Nyní, když zadáváte nové hodnoty do A1, bude si položka v B1 pamatovat starý součet a přidá hodnotu z A1.
Zde je OBROVSKÉ omezení. Nemůžete zadat žádné hodnoty jinde na listu! Kdykoli zadáte hodnotu nebo dojde k přepočítání listu, bude hodnota v A1 přidána k hodnotě v B1. Mnohokrát tedy zasáhnete F9 a budete sledovat, jak se B1 u každé F9 zvyšuje o 5.
Bezpečnější způsob, jak toho dosáhnout, je malé makro obsluhy událostí. Tento kód budete muset přidat do podokna kódu pro List1 (za předpokladu, že pracujete na Listu1). Kód obslužné rutiny události by byl následující:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = “$A$1” Then Application.EnableEvents = False Range(“B1”).Value = Range(“B1”).Value + Target.Value Application.EnableEvents = True End If End Sub
Tento bit kódu se spustí pokaždé, když se na listu změní buňka. Cíl je speciální objektová proměnná, která určuje, která buňka byla změněna. Obslužná rutina události zkontroluje, která buňka byla právě změněna. Pokud byla buňka A1, přidá hodnotu v A1 do B1. Při změně B1 musíme vypnout obslužné rutiny událostí, aby se obslužná rutina události znovu nevolala.