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 Dipelajari | Keterangan |
|---|---|
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.
