Bangun Program VBA yang Lebih Tangguh dengan On Error GoTo

 

Langkah 1 — Jalankan Program Tanpa Error Handling

Perhatikan kode berikut.

Sub BukaLaporan()

    Workbooks.Open "D:\Laporan.xlsx"

    MsgBox "File berhasil dibuka."

End Sub

Kode terlihat benar.

Namun, apa yang terjadi jika file Laporan.xlsx sudah dipindahkan atau dihapus?

Hasilnya adalah Runtime Error dan program langsung berhenti.


Langkah 2 — Tambahkan On Error GoTo

Sekarang tambahkan satu baris berikut di awal prosedur.

On Error GoTo ErrorHandler

Kode menjadi seperti berikut.

Sub BukaLaporan()

    On Error GoTo ErrorHandler

    Workbooks.Open "D:\Laporan.xlsx"

    MsgBox "File berhasil dibuka."

    Exit Sub

ErrorHandler:

    MsgBox "File tidak ditemukan."

End Sub

Sekarang ketika file tidak tersedia, VBA tidak langsung berhenti.

Sebaliknya, program berpindah ke bagian ErrorHandler.


Apa yang Sebenarnya Terjadi?

Mari kita lihat alur program.

Mulai Program
      │
      ▼
Jalankan Kode
      │
      ▼
Terjadi Runtime Error?
      │
 ┌────┴────┐
 │         │
Tidak      Ya
 │         │
 ▼         ▼
Lanjut   Lompat ke
Kode     ErrorHandler
 │         │
 └────┬────┘
      ▼
Program Selesai

Inilah perbedaan utama dibandingkan On Error Resume Next.

Resume Next melewati error.

Sedangkan On Error GoTo memindahkan program ke lokasi tertentu untuk menangani error.


Mengenal Label pada VBA

Perhatikan bagian berikut.

ErrorHandler:

Baris tersebut disebut label.

Label berfungsi sebagai tujuan perpindahan alur program ketika terjadi Runtime Error.

Nama label bebas, misalnya:

ErrorHandler:

atau

Kesalahan:

atau

HandleError:

Namun, penggunaan nama ErrorHandler lebih umum karena mudah dipahami.


Mengapa Harus Ada Exit Sub?

Lihat kembali struktur berikut.

Exit Sub

ErrorHandler:

Banyak pemula menganggap Exit Sub tidak diperlukan.

Padahal, perintah tersebut sangat penting.

Tanpa Exit Sub, ketika proses utama selesai tanpa error, alur program akan tetap turun ke bagian ErrorHandler.

Akibatnya, pesan error bisa muncul meskipun sebenarnya tidak terjadi kesalahan.


Studi Kasus 1 — Membuka Worksheet

Sub TampilkanData()

    On Error GoTo ErrorHandler

    Worksheets("Data").Activate

    MsgBox "Worksheet berhasil dibuka."

    Exit Sub

ErrorHandler:

    MsgBox "Worksheet Data tidak ditemukan."

End Sub

Program kini memberikan informasi yang lebih jelas kepada pengguna.


Studi Kasus 2 — Membuka Workbook

Sub BukaFile()

    On Error GoTo ErrorHandler

    Workbooks.Open "D:\Data.xlsx"

    MsgBox "Workbook berhasil dibuka."

    Exit Sub

ErrorHandler:

    MsgBox "Workbook tidak dapat dibuka."

End Sub

Daripada menampilkan pesan bawaan VBA, pengguna memperoleh informasi yang lebih mudah dipahami.


Studi Kasus 3 — Menghapus Worksheet

Sub HapusSheet()

    On Error GoTo ErrorHandler

    Worksheets("Temp").Delete

    MsgBox "Worksheet berhasil dihapus."

    Exit Sub

ErrorHandler:

    MsgBox "Worksheet Temp tidak ditemukan."

End Sub

Contoh ini memperlihatkan bahwa satu pola Error Handling dapat digunakan pada berbagai kondisi.


Kesalahan yang Sering Terjadi

Tidak Menambahkan Label

On Error GoTo ErrorHandler

tetapi tidak ada:

ErrorHandler:

Akibatnya, kode tidak dapat dijalankan.


Menulis Label di Tengah Program

Usahakan bagian penanganan error ditempatkan di akhir prosedur agar alur program lebih mudah dibaca.


Semua Error Ditangani dengan Pesan yang Sama

Contoh:

MsgBox "Terjadi Error."

Pesan tersebut kurang membantu.

Sebaiknya sesuaikan isi pesan dengan proses yang sedang dijalankan.


Tips Profesional

✔ Letakkan On Error GoTo di awal prosedur jika seluruh proses berpotensi menghasilkan Runtime Error.

✔ Gunakan nama label yang konsisten, misalnya ErrorHandler.

✔ Pisahkan kode utama dan kode penanganan error agar lebih mudah dipelajari.

✔ Gunakan pesan yang membantu pengguna memahami masalah.

✔ Bersihkan objek atau tutup file yang sudah dibuka sebelum prosedur berakhir jika diperlukan.


Kapan Menggunakan On Error GoTo?

Gunakan teknik ini ketika program melakukan operasi yang melibatkan:

  • File atau folder.

  • Workbook atau Worksheet.

  • Database.

  • Printer.

  • Koneksi jaringan.

  • Proses impor atau ekspor data.

  • Objek yang mungkin tidak tersedia.

Pada kondisi tersebut, On Error GoTo lebih disarankan dibandingkan On Error Resume Next karena Anda masih memiliki kesempatan untuk menangani error secara khusus.


Catatan Penting

On Error GoTo bukan berarti Anda boleh mengabaikan penyebab error.

Error Handling bertujuan menjaga agar aplikasi tetap terkendali ketika terjadi masalah.

Setelah aplikasi stabil, Anda tetap perlu mencari akar penyebab error agar masalah tidak terus berulang.


Ringkasan

Yang DipelajariKeterangan
On Error GoTo Mengalihkan alur program ke label tertentu saat Runtime Error terjadi.
Label Penanda lokasi penanganan error, misalnya ErrorHandler:
Exit Sub Mencegah program masuk ke blok Error Handler ketika tidak terjadi error.
Kelebihan Penanganan Runtime Error lebih terstruktur dan mudah dikembangkan.
Penggunaan Cocok untuk proses yang melibatkan file, worksheet, workbook, dan objek lainnya.

Kesimpulan

On Error GoTo merupakan teknik Error Handling yang lebih terstruktur dibandingkan On Error Resume Next. Dengan mengarahkan program ke blok penanganan error khusus, Anda dapat memberikan informasi yang lebih jelas kepada pengguna, menjaga alur program tetap terkendali, serta melakukan tindakan tambahan sebelum prosedur berakhir.

Semakin kompleks aplikasi VBA yang Anda bangun, semakin penting penggunaan On Error GoTo sebagai bagian dari praktik pemrograman yang baik.


Tantangan Praktik

Tantangan 1

Buat prosedur yang membuka workbook berdasarkan lokasi file. Jika file tidak ditemukan, tampilkan pesan yang menjelaskan bahwa pengguna harus memeriksa lokasi file.


Tantangan 2

Buat prosedur yang mengaktifkan worksheet Rekap. Jika worksheet tidak tersedia, tampilkan pesan yang sesuai menggunakan On Error GoTo.


Tantangan 3

Modifikasi salah satu prosedur yang pernah Anda buat sebelumnya dengan menambahkan On Error GoTo, kemudian uji perilaku program ketika terjadi Runtime Error.

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.