Vpraša Michelle,
Mislim, da sem na pravi poti s krožno referenco. Tu je moj problem. Imam dve celici
A1=5
inB1=5
. Kar želim storiti, je, da si B1 zapomni 5, nato pa želim dodati novo vrednost A1, recimo, da je A1 zdaj enak 10. Ali lahko dobim formulo B1, ki zapomni 5, doda pa tudi 10? Torej zdajB1=15
?
Običajno so krožne reference nekaj slabega, včasih pa jih lahko uporabimo v našo korist. Tukaj je način, ki ni makro, kako narediti, kar želite. Delovalo bo le v določenih situacijah.
- V Excelovem meniju izberite Orodja> Možnosti.
- Pojdite na zavihek Izračun. Potrdite polje za ponovitve. Spremenite največje ponovitve na 1.
- Kliknite V redu, da zaprete pogovorno okno z možnostmi.
- V celico A1 vnesite 5.
- V celico B1 vnesite 0
- Vnesite
=A1+B1
v celico B1 - Ko vnesete nove vrednosti v A1, si bo vnos v B1 zapomnil staro vsoto in dodal vrednost iz A1.
Tukaj je OGROMNA omejitev. Vrednosti drugje na listu ne morete vnesti! Vsakič, ko vnesete vrednost ali se list ponovno izračuna, se vrednost v A1 doda vrednosti v B1. Tako boste s hitrim pritiskom na F9 večkrat opazili, da se B1 poveča za 5 za vsak F9.
To je varneje narediti z majhnim makrom za obdelavo dogodkov. To kodo boste morali dodati v podokno za Sheet1 (ob predpostavki, da delate na Sheet1). Koda za obdelavo dogodkov bi bila naslednja:
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
Ta bit kode se zažene vsakič, ko se celica spremeni na listu. Cilj je posebna spremenljivka predmeta, ki pove, katera celica je bila spremenjena. Vodnik dogodkov preveri, katera celica je bila pravkar spremenjena. Če je bila celica A1, bo vrednost v A1 dodala B1. Med spreminjanjem B1 moramo izklopiti obdelovalce dogodkov, da se obdelovalec dogodkov ne bo več poklical.