Application.EnableEvents=False/True; görevi nedir

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,265
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
Değerli Arkadaşlar..!
Aşağıda;
Application.EnableEvents = False
veya
Application.EnableEvents = True
kodu ne işe yarıyor, yani yaptığı görevi nedir.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,397
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Merhaba,
kodlar çalışırken, başka bir olayı(event) tetikliyorsa bunu önlemek için kullanılır.
Örneğin, herhangi bir nesnenin change olayında kod yazılı ise ve değişiklik meydana gelip
tetikleniyorsa, kodların çalışması bitene kadar change olayı devre dışı bırakılır.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,547
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bu komut genellikle sayfaya ait kodlarda kullanılmaktadır. Aşağıdaki örnekler sayfaya ait olaylardır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
 
End Sub
 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
End Sub
Bazı durumlarda yazdığınız kodlar kısır döngüye girebilir. Bu durumlarda bu komut çok işinize yarayacaktır.

Aşağıdaki iki örnek kodu denerseniz farkı rahatlıkla anlayabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = Range("A1") + 1
End Sub
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Range("A1") = Range("A1") + 1
    Application.EnableEvents = True
End Sub
 

EKREM1661

Altın Üye
Katılım
10 Kasım 2006
Mesajlar
1,265
Excel Vers. ve Dili
Excel-2016
Altın Üyelik Bitiş Tarihi
03-02-2026
Arkadaşlar..! konu anlaşıldı. (eylemi amacın dışına taşırmamış oluyor) çok teşekkür ediyorum..
 
Son düzenleme:

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
3,968
Excel Vers. ve Dili
2013 Türkçe
Sn Korhan Bey
Application.EnableEvents ne işe yaradığını anlaşılır bir örnekle açıkladığınız için teşekkürler.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
728
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Selamlar,

Bu komut genellikle sayfaya ait kodlarda kullanılmaktadır. Aşağıdaki örnekler sayfaya ait olaylardır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
Bazı durumlarda yazdığınız kodlar kısır döngüye girebilir. Bu durumlarda bu komut çok işinize yarayacaktır.

Aşağıdaki iki örnek kodu denerseniz farkı rahatlıkla anlayabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = Range("A1") + 1
End Sub
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Range("A1") = Range("A1") + 1
    Application.EnableEvents = True
End Sub


fark nedir hocam ben pek anlayamadım?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
fark nedir hocam ben pek anlayamadım?
Her iki kod da sayfada değişiklik olduğu zaman devreye giriyor Ve her iki kod da A1 hücresine 1 ekleyip yine A1'e yazıyor. Yani kod her çalıştığında A1=1 ise 2 oluyor, tekrar çalışınca 3 oluyor vs

İlk kodda bahsedilen satırlar olmadığı için ilk değişiklikten sonra konuşuruz d A1'in tekrar değiştiğini görüyor (çünkü 1 iken 2 oldu mesela) ve tekrar 1 ekliyor. A1 yine değiştiği için bir daha çalışıyor ve A1'i yine arttırıyor ve bu böyle sonsuza excel kilitlenincete kadar devam ediyor. Çünkü kod A1 değiştiği için devreye giriyor ve A1'i değiştiriyor ve tekrar tekrar devreye giriyor.

İkinci kodda ise ilk False satırı sayesinde Change olayı geçici olarak devre dışı kalıyor ve A1 değişince devreye girmiyor. Sonra True satırıyla tekrar devreye giriyor ve sayfada değişiklik olmasını bekliyor.

Bu ve benzeri False kodları True ile düzeltilmezse diğer dosyalarda o özelliğe ihtiyaç duyulduğunda devreye girmez ve çalışmamız istenen sonucu vermez. Bu nedenle normalde True olan bir özelliği kodla False yaptığımızda kodun çalışması bitmeden True yapmamız gerekir.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
728
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Teşekkürler hocam.. Aşağıdaki kodum da excel dosyam aşırı yavaş çalışıyor. Bu dosya basit 1 dosyaya adapte edildiğinde 100 tane sayfayı dahi anında oluşturuyor ancak karışık datalı formüllü dosyalarda feci yavaş oluyor. Application.ScreenUpdating = False ve Application.ScreenUpdating = True ekledim ama pek 1 faydası olmadı. Buna öneriniz varmıdır?

Sub cogalt()
Application.ScreenUpdating = False
For k = 1 To Application.Sheets.Count
If IsNumeric(Sheets(k).Name) Then
sayisal = sayisal + 1
Else
harf = harf + 1
End If
Next k
Tespit = InputBox("Gün", "Tespit")
For i = sayisal To Tespit + sayisal - 1
Sheets("1").Select
Sheets("1").Copy Before:=Sheets(1)
Sheets(1).Name = i + 1
Sheets(1).Range("p1") = Sheets("1").Range("p1") + i
Next i
For j = 1 To Application.Sheets.Count - harf
On Error Resume Next
Sheets(CStr(j)).Select
Sheets(CStr(j)).Move Before:=Sheets(j)
Next j
Sheets(1).Select
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Üst