Olay tetikleyicilerini gerçekten karıştırdıktan sonra, bunu araştırmak ve nasıl çalıştığını öğrenmek için çok zaman harcadım. Çok fazla dağınık bilgi olduğu için, bulduğum şeyleri tek bir yerde, adım adım aşağıdaki gibi paylaşmaya karar verdim:
1) VBA Projesi (YourWorkBookName.xlsm) altında VBA Düzenleyicisini açın, Microsoft Excel Nesnesini açın ve değişiklik olayının ilgili olacağı Sayfayı seçin.
2) Varsayılan kod görünümü "Genel" dir. Ortadaki açılır listeden "Çalışma Sayfası" nı seçin.
3) Private Sub Worksheet_SelectionChange olması gerektiği gibi zaten orada, onu yalnız bırakın. Mike Rosenblum'un kodunu yukarıdan kopyalayın / yapıştırın ve .Range referansını değişiklik için izlediğiniz hücreye değiştirin (benim durumumda B3). Ancak Makronuzu henüz yerleştirmeyin ("Sonra" dan sonra "Makro" kelimesini kaldırdım):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
End Sub
veya sol üstteki açılır listeden "Değiştir" i seçin ve Özel Abone ile Son Abone arasındaki boşluğa yapıştırın If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
4) "Sonra" dan sonraki satırda olayları kapatın, böylece makronuzu çağırdığınızda olayları tetiklemez ve bu Çalışma Sayfası_Değişini Excel'i çökerten ve / veya her şeyi karıştıran hiç bitmeyen bir döngüde tekrar çalıştırmayı deneyin:
Application.EnableEvents = False
5) Makronuzu arayın
Call YourMacroName
6) Olayları tekrar açın, böylece bir sonraki değişiklik (ve diğer tüm / diğer olaylar) tetiklenir:
Application.EnableEvents = True
7) If bloğunu ve Alt:
End If
End Sub
Kodun tamamı:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B3")) Is Nothing Then
Application.EnableEvents = False
Call UpdateAndViewOnly
Application.EnableEvents = True
End If
End Sub
Bu, modüllerdeki olayları açıp kapatarak sorun yaratır ve sadece değişikliğin tetiklenmesine izin verir, olayları kapatır, makronuzu çalıştırır ve olayları tekrar açar.