Michelle soruyor:
Dairesel bir referansla doğru yolda olduğumu düşünüyorum. İşte benim sorunum. İki hücrem var
A1=5
veB1=5
. Yapmak istediğim, B1'in 5'i ezberlemesini sağlamak ve sonra A1'e yeni bir değer eklemek istiyorum, mesela A1 şimdi 10'a eşittir. 5'i ezberleyen ama aynı zamanda 10 ekleyen bir B1 formülüne sahip olabilir miyim? Peki şimdiB1=15
?
Genelde döngüsel referanslar kötü bir şeydir, ancak bazen bizim yararımıza kullanılabilirler. İşte yapmak istediğiniz şeyi yapmanın makro olmayan yolu. Yalnızca belirli durumlarda işe yarayacaktır.
- Excel menüsünden Araçlar> Seçenekler'i seçin.
- Hesaplama sekmesine gidin. Yinelemeler için kutuyu işaretleyin. Maksimum Yineleme'yi 1 olarak değiştirin.
- Seçenekler iletişim kutusunu kapatmak için Tamam'ı tıklayın.
- Hücre A1'e 5 girin.
- B1 Hücresine 0 girin
=A1+B1
B1 Hücresine girin- Şimdi, A1'e yeni değerler girerken, B1'deki giriş eski toplamı hatırlayacak ve A1'den değeri ekleyecektir.
İşte BÜYÜK sınırlama. Sayfanın başka bir yerine herhangi bir değer giremezsiniz! Bir değer girdiğinizde veya sayfa yeniden hesaplandığında, A1'deki değer B1'deki değere eklenecektir. Böylece, F9'a birkaç kez basarak, B1'in her F9 için 5 arttığını izleyeceksiniz.
Bunu yapmanın daha güvenli yolu, küçük bir olay işleyici makrosu kullanmaktır. Bu kodu Sayfa1 kod bölmesine eklemeniz gerekecektir (Sayfa1 üzerinde çalıştığınızı varsayarak). Olay işleyici kodu aşağıdaki gibi olacaktır:
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
Bu kod parçası, sayfadaki bir hücre her değiştirildiğinde çalıştırılır. Hedef, hangi hücrenin değiştirildiğini söyleyen özel bir nesne değişkenidir. Olay işleyici, az önce hangi hücrenin değiştirildiğini kontrol eder. Hücre A1 ise, A1'deki değeri B1'e ekleyecektir. B1'i değiştirirken olay işleyicilerini kapatmalıyız, böylece olay işleyicisi kendisini bir daha çağırmasın.