Spørger Michelle,
Jeg tror, jeg er på rette vej med en cirkulær reference. Her er mit problem. Jeg har to celler,
A1=5
ogB1=5
. Hvad jeg vil gøre er at B1 husker 5, og så vil jeg tilføje en ny værdi til A1, siger A1 nu lig med 10. Kan jeg have en B1-formel, der husker 5, men også tilføjer 10? Så nuB1=15
?
Normalt er cirkulære referencer en dårlig ting, men nogle gange kan de bruges til vores fordel. Her er den ikke-makro måde at gøre, hvad du vil gøre. Det fungerer kun i visse situationer.
- Vælg Værktøjer> Indstillinger i Excel-menuen.
- Gå til fanen Beregning. Marker afkrydsningsfeltet for gentagelser. Skift maksimale gentagelser til 1.
- Klik på OK for at lukke dialogboksen Indstillinger.
- Indtast 5 i celle A1.
- Indtast 0 i celle B1
- Indtast
=A1+B1
i celle B1 - Når du nu indtaster nye værdier i A1, husker posten i B1 det gamle total og tilføjer værdien fra A1.
Her er den enorme begrænsning. Du kan ikke indtaste nogen værdier andetsteds på arket! Hver gang du indtaster en værdi, eller arket genberegnes, føjes værdien i A1 til værdien i B1. Ved at trykke F9 en masse gange vil du således se B1 stige med 5 for hver F9.
Den sikrere måde at gøre dette på er med en lille begivenhedshåndteringsmakro. Du bliver nødt til at tilføje denne kode til kodepanelet for Sheet1 (forudsat at du arbejder på Sheet1). Eventhåndteringskoden ville være som følger:
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
Denne bit kode køres når som helst, når en celle ændres på arket. Target er en speciel objektvariabel, der fortæller, hvilken celle der blev ændret. Begivenhedshåndtereren kontrollerer for at se, hvilken celle der netop blev ændret. Hvis cellen var A1, tilføjer den værdien i A1 til B1. Vi er nødt til at slå begivenhedshåndterere fra, mens vi skifter B1, så begivenhedshåndtereren ikke kalder sig selv igen.