Mengapa Error Handling Itu Penting?
Tidak semua program VBA berjalan sesuai rencana. Dalam praktiknya, berbagai kondisi dapat menyebabkan kesalahan saat program dijalankan.
Misalnya:
-
worksheet yang dicari ternyata tidak ada;
-
file yang akan dibuka telah dipindahkan;
-
pengguna memasukkan data yang tidak sesuai;
-
proses pencarian tidak menemukan hasil;
-
terjadi pembagian dengan nol.
Tanpa penanganan error, VBA akan langsung menghentikan program dan menampilkan pesan kesalahan (Run-time Error). Selain mengganggu pengguna, kondisi ini juga dapat menyebabkan proses otomatisasi terhenti di tengah jalan.
Untuk mengatasi masalah tersebut, VBA menyediakan mekanisme Error Handling melalui pernyataan On Error.
Apa Itu Error Handling?
Error Handling adalah teknik untuk menangani kesalahan yang terjadi saat program sedang berjalan (run-time error), sehingga program dapat memberikan respons yang lebih baik daripada langsung berhenti.
Di VBA, teknik ini umumnya menggunakan pernyataan:
-
On Error Resume Next -
On Error GoTo -
On Error GoTo 0
Masing-masing memiliki fungsi yang berbeda.
Mengenal On Error Resume Next
On Error Resume Next membuat VBA melanjutkan eksekusi ke baris berikutnya apabila terjadi kesalahan.
Sintaks:
On Error Resume Next
Contoh:
Sub ContohResumeNext()
On Error Resume Next
Worksheets("Data2026").Activate
MsgBox "Program selesai."
End Sub
Jika worksheet Data2026 tidak ada, VBA tidak akan menampilkan Run-time Error. Program akan langsung melanjutkan ke baris berikutnya.
Kapan Menggunakan Resume Next?
On Error Resume Next cocok digunakan ketika:
-
kesalahan memang boleh diabaikan;
-
Anda ingin memeriksa apakah suatu objek tersedia;
-
kesalahan akan ditangani secara manual setelahnya.
Contoh yang sering dijumpai:
On Error Resume Next
Set Hasil = Range("A:A").Find("Andi")
On Error GoTo 0
Mengenal On Error GoTo Label
Jika ingin menangani kesalahan dengan cara tertentu, gunakan On Error GoTo.
Sintaks:
On Error GoTo NamaLabel
Contoh:
Sub ContohGoTo()
On Error GoTo ErrorHandler
Worksheets("Data").Activate
MsgBox "Berhasil."
Exit Sub
ErrorHandler:
MsgBox "Worksheet tidak ditemukan."
End Sub
Apabila terjadi kesalahan, VBA akan langsung melompat ke label ErrorHandler.
Mengapa Menggunakan Exit Sub?
Perhatikan bagian berikut.
Exit Sub
Perintah ini mencegah VBA masuk ke bagian ErrorHandler ketika tidak terjadi kesalahan.
Tanpa Exit Sub, blok penanganan error tetap akan dijalankan meskipun program berhasil.
Mengenal On Error GoTo 0
On Error GoTo 0 digunakan untuk menonaktifkan Error Handling yang sebelumnya telah diaktifkan.
Contoh:
Sub Contoh()
On Error Resume Next
Worksheets("Tes").Activate
On Error GoTo 0
End Sub
Setelah On Error GoTo 0, setiap kesalahan berikutnya akan kembali menghasilkan Run-time Error seperti biasa.
Menggunakan Objek Err
Saat terjadi kesalahan, VBA menyimpan informasi pada objek Err.
Beberapa properti yang sering digunakan adalah:
| Properti | Fungsi |
|---|---|
Err.Number |
Nomor error |
Err.Description |
Deskripsi error |
Err.Clear |
Menghapus informasi error |
Contoh:
Sub ContohErr()
On Error Resume Next
Worksheets("Data").Activate
If Err.Number <> 0 Then
MsgBox Err.Description
Err.Clear
End If
End Sub
Studi Kasus
Misalkan pengguna diminta membuka workbook tertentu.
Sub BukaFile()
On Error GoTo ErrorFile
Workbooks.Open "D:\Laporan.xlsx"
MsgBox "File berhasil dibuka."
Exit Sub
ErrorFile:
MsgBox "File tidak ditemukan."
End Sub
Daripada menampilkan pesan error bawaan VBA, pengguna akan memperoleh pesan yang lebih mudah dipahami.
Resume Next vs GoTo
| Resume Next | GoTo Label |
|---|---|
| Mengabaikan error dan lanjut ke baris berikutnya | Melompat ke blok penanganan error |
| Cocok untuk kesalahan kecil | Cocok untuk penanganan error yang lebih lengkap |
| Berisiko menyembunyikan error jika digunakan sembarangan | Lebih aman untuk aplikasi yang lebih besar |
Kesalahan yang Sering Terjadi
Menggunakan Resume Next Terlalu Lama
Kesalahan yang sering dilakukan adalah menempatkan:
On Error Resume Next
di awal prosedur, tetapi tidak pernah menonaktifkannya.
Akibatnya, berbagai error penting bisa terlewat tanpa disadari.
Gunakan On Error GoTo 0 setelah bagian yang memang memerlukan penanganan khusus.
Tidak Memeriksa Objek Err
Jika menggunakan Resume Next, sebaiknya periksa apakah benar terjadi error.
If Err.Number <> 0 Then
MsgBox Err.Description
End If
Lupa Membersihkan Err
Jika informasi pada objek Err tidak lagi diperlukan, gunakan:
Err.Clear
Hal ini membantu menghindari penggunaan informasi error yang sudah tidak relevan.
Tips Praktis
💡 Gunakan On Error GoTo untuk aplikasi yang digunakan oleh banyak pengguna.
💡 Gunakan On Error Resume Next hanya pada bagian kode yang memang diperkirakan dapat menghasilkan error yang masih bisa ditangani.
💡 Selalu gunakan Exit Sub sebelum label penanganan error.
💡 Tampilkan pesan error yang mudah dipahami pengguna, bukan istilah teknis yang membingungkan.
💡 Manfaatkan Err.Number dan Err.Description saat melakukan proses debugging.
Ringkasan
| Pernyataan | Fungsi |
|---|---|
On Error Resume Next |
Mengabaikan error dan lanjut ke baris berikutnya |
On Error GoTo Label |
Mengalihkan program ke blok penanganan error |
On Error GoTo 0 |
Menonaktifkan Error Handling |
Err.Number |
Nomor error |
Err.Description |
Deskripsi error |
Err.Clear |
Menghapus informasi error |
Kesimpulan
On Error merupakan mekanisme penting dalam VBA Excel untuk menangani kesalahan saat program dijalankan. Dengan memilih teknik yang sesuai, baik menggunakan On Error Resume Next maupun On Error GoTo, Anda dapat mencegah program berhenti secara tiba-tiba dan memberikan pengalaman yang lebih baik bagi pengguna. Selain itu, pemanfaatan objek Err memungkinkan Anda memperoleh informasi yang berguna untuk menampilkan pesan yang lebih jelas maupun membantu proses debugging.
