Bikin VBA Lebih Andal dengan On Error

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:

PropertiFungsi
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 NextGoTo 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

PernyataanFungsi
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.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.