Worksheet Events

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.

Apa Itu Events

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:

  1. Change Event (Worksheet_Change):
    • Terjadi ketika isi Cell atau Range Cell berubah.
  2. Activate Event (Worksheet_Activate):
    • Terjadi ketika lembar kerja menjadi aktif, biasanya ketika pengguna mengkliknya.
  3. Deactivate Event (Worksheet_Deactivate):
    • Terjadi ketika lembar kerja kehilangan fokus, misalnya ketika pengguna pindah ke lembar kerja lain.
  4. Calculate Event (Worksheet_Calculate):
    • Terjadi ketika perhitungan otomatis dalam lembar kerja berlangsung.
  5. BeforeDoubleClick Event (Worksheet_BeforeDoubleClick):
    • Terjadi sebelum pengguna melakukan klik ganda pada sel.
  6. BeforeRightClick Event (Worksheet_BeforeRightClick):
    • Terjadi sebelum pengguna melakukan klik kanan pada sel.
  7. SelectionChange Event (Worksheet_SelectionChange):
    • Terjadi ketika seleksi dalam lembar kerja berubah, baik itu perubahan sel tunggal atau Range.
  8. BeforePrint Event (Worksheet_BeforePrint):
    • Terjadi sebelum lembar kerja dicetak.
  9. ChangeTableEvent Event (Worksheet_ChangeTable):
    • Terjadi ketika ada perubahan dalam tabel yang ada di lembar kerja.
  10. FollowHyperlink Event (Worksheet_FollowHyperlink):
    • Terjadi ketika pengguna mengikuti hyperlink di lembar kerja.
  11. PivotTableUpdate Event (Worksheet_PivotTableUpdate):
    • Terjadi ketika pivot table dalam lembar kerja di-update.

Masih banyak Events yang tidak disebutkan disini karena ada banyak sekali Events, dan setiap Object pasti memiliki Eventsnya masing-masing.

Cara Menggunakan Events

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.

Tips Menggunakan Events

Dibawah ini ada bebebapa tips dalam menggunakan events didalam worksheet berdasarkan pengalaman yang saya temui.

Mematikan Events dengan EnableEvents

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.

Leave a Reply

Your email address will not be published. Required fields are marked *