Saat ingin menjalankan sebuah script Macro VBA ketika mengubah isi Cells, atau saat melakukan Double Click pada Cells atau saat memilih Worksheet, atau bahkan saat mengklik sebuah tombol.
Maka pemicu untuk menjalankan script tersebut, inilah yang dinamakan Events.
Dalam setiap aksi menjalankan sebuah script VBA pada Worksheet pasti didasari dengan menggunakan Worksheet Event.
Begitu juga pada script yang ada pada sebuah Userform, script akan dijalankan pada events yang sesuai.
Event membantu kita dalam menjalankan kode VBA setiap kali peristiwa yang sesuai terjadi.
Pada materi ini saya akan membahas secara mendalam tentang konsep dan penerapan Worksheet Events pada VBA.
Event adalah sebuah subrutine Local yang berada pada Object module seperti Worksheet module atau Userform Module (di Standard Module tidak ada Events).
Bagian Subrutine ini akan dijalankan ketika peristiwa atau kejadian yang terjadi sesuai dengan Eventsnya.
Setiap objek VBA memiliki serangkaian Events yang dapat dipicu, tergantung pada jenis objeknya.
Misalnya, Userform dapat memiliki event seperti Click
, Change
, Load
, dan Unload
, sedangkan objek Sheet dalam Excel dapat memiliki events seperti Change
, SelectionChange
, dan BeforeDoubleClick
, dan sebagainya.
Terdapat beberapa jenis Worksheet Events yang dapat Anda gunakan dalam VBA (Visual Basic for Applications) untuk memantau dan merespons peristiwa yang terjadi dalam lembar kerja Excel.
Berikut ini adalah beberapa contoh jenis Worksheet Events yang umum digunakan:
Masih banyak Events yang tidak disebutkan disini karena ada banyak sekali Events, dan setiap Object pasti memiliki Eventsnya masing-masing.
Pada penjelasan tampilan Visual Basic Editor yang sebelumnya sudah dibahas, Object List dan Events list terlihat jelas di atas VBE.
Untuk menggunakan Events, silahkan pilih Object yang akan ditambahkan Events misalnya Worksheet, kemudian pilih Events pada Events List.
Misalnya ketika ingin menggunakan Events Worksheet_Change dimana Script akan dijalankan ketika ada perubahan nilai pada worksheet.
Pilih Object Worksheet pada Object List kemudian pilih Change pada Events List. Maka Subrutine Events akan dibuatkan otomatis
Selanjutnya tinggal isikan script yang ingin dijalankan ketika Events tersebut aktif didalam subrutine Events.
Dibawah ini ada bebebapa tips dalam menggunakan events didalam worksheet berdasarkan pengalaman yang saya temui.
Ketika menggunakan event Change
, penting untuk memahami bagaimana mencegah looping tak terbatas (Infinity Loop).
Looping ini bisa terjadi ketika perubahan pada cell (Change) memicu event Change
yang kemudian mengubah Cell lagi (Change), sehingga memicu event Change
lagi, dan seterusnya.
Untuk mengatasi hal ini, maka perlu mematikan events sementara dengan menggunakan Application.EnableEvents = False
sebelum melakukan perubahan pada cell melalui kode.
Setelah perubahan selesai, aktifkan kembali events dengan Application.EnableEvents = True
.
Berikut adalah contoh penggunaan EnableEvents
untuk mencegah looping tak terbatas:
Private Sub Worksheet_Change(ByVal Target As Range) ' Cek apakah perubahan terjadi pada sel tertentu If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then ' Matikan events sementara Application.EnableEvents = False 'perubahan pada cell ini tidak akan memicu event lagi Target.Value = Target.Value * 2 ' Aktifkan kembali events Application.EnableEvents = True End If End Sub
Dalam contoh di atas, event Change
memeriksa apakah perubahan terjadi di antara cell A1 hingga A10. Jika iya, maka event dimatikan dengan Application.EnableEvents = False
, perubahan dilakukan (menggandakan nilai Cell), dan kemudian event diaktifkan kembali dengan Application.EnableEvents = True
.
Tips Lain dalam Penggunaan Event Change adalah dengan Membatasi Area Pengawasan.
Selalu gunakan Intersect
atau pembatasan lain untuk membatasi area Cell yang dipantau oleh event Change
. Ini membantu mengurangi jumlah Events yang tidak perlu diproses.