Saya menghabiskan banyak waktu untuk meneliti ini dan mempelajari cara kerjanya, setelah benar-benar mengacaukan pemicu acara. Karena ada begitu banyak info yang tersebar, saya memutuskan untuk membagikan apa yang menurut saya berfungsi semua di satu tempat, langkah demi langkah sebagai berikut:
1) Buka VBA Editor, di bawah Proyek VBA (YourWorkBookName.xlsm) buka Objek Microsoft Excel dan pilih Lembar yang akan terkait dengan peristiwa perubahan.
2) Tampilan kode default adalah "Umum". Dari daftar drop-down di tengah atas, pilih "Worksheet."
3) Private Sub Worksheet_SelectionChange sudah ada sebagaimana mestinya, biarkan saja. Salin / Tempel kode Mike Rosenblum dari atas dan ubah referensi .Range ke sel yang Anda perhatikan perubahannya (B3, dalam kasus saya). Namun, jangan letakkan Makro Anda (saya menghapus kata "Makro" setelah "Lalu"):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
End Sub
atau dari daftar tarik-turun di kiri atas, pilih "Ubah" dan di ruang antara Sub Pribadi dan Sub Akhir, tempel If Not Intersect(Target, Me.Range("H5")) Is Nothing Then
4) Pada baris setelah "Kemudian" matikan acara sehingga ketika Anda memanggil makro Anda, itu tidak memicu kejadian dan mencoba menjalankan Worksheet_Change ini lagi dalam siklus yang tidak pernah berakhir yang membuat Excel crash dan / atau mengacaukan semuanya:
Application.EnableEvents = False
5) Panggil makro Anda
Call YourMacroName
6) Hidupkan kembali peristiwa sehingga perubahan berikutnya (dan setiap / semua peristiwa lainnya) memicu:
Application.EnableEvents = True
7) Akhiri blok If dan Sub:
End If
End Sub
Seluruh kode:
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
Ini akan mengaktifkan / menonaktifkan peristiwa dari Modul yang menciptakan masalah dan memungkinkan pemicu perubahan, menonaktifkan peristiwa, menjalankan makro Anda, dan mengaktifkan kembali peristiwa.