• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

FORMÜL'ün çalışması durdurulabilir mi ?

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Merhaba,

Bilindiği üzere, Hücreye yazılan Formül, görevini yapmak üzere Otomatik olarak çalışmaktadır.

Otomatik yada Elle çalışmasını sağlamak üzere, Dosya >>> Seçenekler >>> Formüller içersinden seçilebilmektedir. Ancak bu seçim yapıldığında Tüm Çalışma Kitabı etkilenmektedir. Oysa;

Böyle bir ihtiyacıma çözüm olacak Kodlama, İstenilen Sayfada/Sayfalarda ve istenilen Hücre/Hücrelerde çalışmalıdır.

ÖRNEK: A1 : 15, B1 : 3, C1 : =A1*B1 ise sonuç Otomatik olarak 45 olacaktır.
İhtiyacım ise, C1 Hücresindeki Formül istenildiğinde çalıştırılmalıdır.
Diğer bir ifadeyle, C1 deki 45 sonuç rakamı, A1 ve/veya B1 deki değerler değişse de değişmeyecek, istenildiğinde çalıştırılabilir olacaktır.

Teşekkür ederim.
 
Merhaba,
Aşağıdaki kodları deneyiniz.

Otomatik Hesaplamayı kapatmak için:
Application.Calculation = xlManual

Otomatik Hesaplamayı açmak için:
Application.Calculation = xlAutomatic

İyi çalışmalar.
 
Yukarıdaki yazımda da izah ettiğim üzere, bu kodlamayı örneğin, "Sayfa 1, B10 Hücresinde" çalıştırmak istersem, nasıl bir kodlamaya ihtiyacım olacak ? Yardım lütfen.
 
Merhaba.

Sayfanın Formüller/Hesaplama Seçenekler/El ile işaretli olması gerekir ve istediğiniz hücrelerdeki hesaplamalarınız da makro ile yapılması gerekir.

İlk mesajınızdaki örnek için aşağıdaki kod A1 ve B1 için çalışıyor.

Sub Örnek()
Application.Calculation = xlManual
Range("C1").FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub
 
Konu, talep yazımda izah ettiğim gibidir. Programım, 200' e yakın sayfadan 10.000'in üzerinde Formulden oluşmaktadır. Ben 1000 lerce formulü Dosya >>> Seçenekler >>> Formüller >>> El ile durdurmak, istediklerimi çalıştırmak isteseydim, öneriniz doğru idi. Ancak, istediğim 1000 lerce formul çalışmasına otomatik olarak devam ederken, istediğim 5-10 tanesi için geçici durdurma ihtiyacına çözümü aramaktır. ! Sanırım açıklayıcı olmuştur.
 
Merhabalar,
Alternatif olarak şunu önerebilirim: Belirttiğiniz gibi az sayıda hücre için bu işlemi istiyorsanız formüllerin durması değil de ilgili alandaki formüllerin değere dönüşmesini sağlayabilirsiniz. Daha sonra tekrar formül eklersiniz. Örneğin
Kod:
Sub Calistir()
Range("A1").Formula = "=SUM(B1:K1)"
Range("A2").Formula = "=COUNTIF(B2:K2,C3)"
End Sub

Sub durdur()
With Range("A1,A2")
    .Value = .Value
End With
End Sub
Calistir makrosu kodlarını hücrelere formül girişi yaparken makro kaydet yöntemiyle elde edebilirsiniz.
İyi çalışmalar...
 
Merhaba.
Cep telefonundan yazıyorum.

Öncelikle gerçek belge ile aynı yapıda bir örnek belge ekleyin ki; yazışmalar afaki, cevaplar da teorik olmaktan çıksın değil mi?
Formüllerin sadece belli sayfa ve belli hücreler için OTOMATİK, diğer sayfa/alanlar için ise ELLE şeklinde hesaplanması için, kanaatim o ki;
ilk bilinmesi gereken şey, hedeflediğiniz hücrelerle diğer sayfa/sayfalardaki formüller arasındaki bağlantı, ilişki.
Sayfalar arasında ilişki yoksa; basitçe şöyle düşünülebilir;
Workseet_Activate kod bloku kullanılalak hesaplama ELLE hale getirilir,
Worksheet_Change veya Worksheet_SelectionChange kod bloku kullanılarak ya da sayfaya eklenecek bir düğmeye atanacak basit bir kod blokunda
Range("A1, C3, f159").calculate
şeklinde hesaplama yaptırılabilir.
 
Merhabalar,
Alternatif olarak şunu önerebilirim: Belirttiğiniz gibi az sayıda hücre için bu işlemi istiyorsanız formüllerin durması değil de ilgili alandaki formüllerin değere dönüşmesini sağlayabilirsiniz. Daha sonra tekrar formül eklersiniz. Örneğin
Kod:
Sub Calistir()
Range("A1").Formula = "=SUM(B1:K1)"
Range("A2").Formula = "=COUNTIF(B2:K2,C3)"
End Sub

Sub durdur()
With Range("A1,A2")
    .Value = .Value
End With
End Sub
Calistir makrosu kodlarını hücrelere formül girişi yaparken makro kaydet yöntemiyle elde edebilirsiniz.
İyi çalışmalar...

Harika, anlaşılır, çalışır, sade, benim için muhteşem, teşekkürler ederim.
 
Geri
Üst