Belajar VBA - Error Handling & Debugging
Series/Belajar VBA/Episode 15
Episode 15 of 25

Belajar VBA - Error Handling & Debugging

Menjinakkan error di VBA: menangkap dan menangani kesalahan dengan On Error GoTo dan On Error Resume Next, membaca Err Number dan Description, serta debugging sistematis memakai breakpoint Debug.Print watch dan Step Into

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Di episode-episode sebelumnya kita sesekali melihat On Error Resume Next dan label Selesai. Episode ini membedah semuanya secara sistematis: error handling dan debugging — dua keterampilan yang membedakan kode yang "biasanya jalan" dari kode yang bisa diandalkan.

Mengapa ini penting? Karena error VBA tidak menghibur. Tanpa penanganan, macro yang gagal meninggalkan kotak dialog merah yang tidak jelas, atau lebih buruk — melanjutkan dengan data yang salah. Dengan error handling yang baik, pengguna mendapat pesan yang jelas; dengan debugging yang baik, kalian menemukan penyebabnya dalam hitungan menit.

Klasifikasi Error di VBA

JenisTerjadi SaatContoh
Compile errorVBA memeriksa kode sebelum jalanOption Explicit melarang variabel tak terdeklarasi
Runtime errorBaris dieksekusiBagi dengan nol, Range tidak ditemukan
Logic errorKode jalan tapi hasil salahNilai terbalik, loop salah hitung

Error handling menangani runtime error. Compile dan logic error ditangani lewat debugging.

On Error GoTo: Pola Error Handler

Cara paling andal menangani runtime error:

Pola error handler standar
Sub ProsesData()
    On Error GoTo Gagal
 
    ' ... logika utama ...
    Range("A1").Value = 100 / 0    ' pemicu error
 
    Exit Sub
 
Gagal:
    MsgBox "Terjadi kesalahan: " & Err.Description, vbCritical
End Sub

Alurnya:

  1. On Error GoTo Gagal — instruksikan VBA: jika ada error, lompat ke label Gagal.
  2. Jika tidak ada error, Exit Sub memastikan kode tidak masuk ke blok handler.
  3. Saat error, kontrol pindah ke Gagal: dan membaca Err.Description.

Perhatikan Exit Sub sebelum Gagal: — tanpa itu, kode normal akan "jatuh" ke handler dan menampilkan pesan palsu.

Membaca Objek Err

Saat error terjadi, VBA mengisi objek Err:

PropertiArti
Err.NumberKode numerik error (mis. 11 = bagi nol)
Err.DescriptionDeskripsi teks (mis. Division by zero)
Err.SourceObjek/aplikasi yang memicu
Pesan error yang informatif
Gagal:
    MsgBox "Error " & Err.Number & vbCrLf & _
           Err.Description & vbCrLf & _
           "di prosedur ProsesData", vbCritical

Gabungan Err.Number dan Err.Description membuat laporan bug dari pengguna jauh lebih berguna.

On Error Resume Next: Melewati Error

On Error Resume Next memerintahkan VBA melanjutkan ke baris berikutnya saat error — berguna untuk operasi yang boleh gagal, tapi berbahaya jika dipakai tanpa sadar:

Pemakaian yang sah - operasi opsional
On Error Resume Next
Range("A1").SpecialCells(xlCellTypeBlanks).Delete
On Error GoTo 0

Di episode 9 kita memakai pola ini: SpecialCells(xlCellTypeBlanks) melempar error bila tidak ada sel kosong — dan itu bukan kegagalan, melainkan kondisi normal. On Error GoTo 0 mematikan mode resume setelahnya.

Warning

On Error Resume Next menyembunyikan semua error — termasuk yang tidak kalian duga. Jangan membiarkannya aktif di seluruh prosedur. Batasi sekecil mungkin, lalu kembalikan dengan On Error GoTo 0. Kode yang diselubungi Resume Next adalah mimpi buruk saat dicari bug-nya.

Menangani Error Spesifik

Kita bisa memberi respons berbeda per Err.Number:

Menangani error spesifik
Sub BukaFile()
    On Error GoTo Gagal
    Workbooks.Open "C:\data\tidak-ada.xlsx"
    Exit Sub
 
Gagal:
    If Err.Number = 1004 Then
        MsgBox "File tidak ditemukan. Periksa path.", vbExclamation
    Else
        MsgBox "Error tak terduga: " & Err.Description, vbCritical
    End If
End Sub

Err.Number = 1004 adalah error umum "Application-defined or object-defined error" di Excel — sering muncul saat path/file tidak ditemukan.

Debugging: Alat Inti VBE

Setelah error handling, debugging adalah cara menemukan di mana dan mengapa.

Breakpoint (F9)

Klik di gutter kiri Code window (atau tekan F9) untuk memasang breakpoint — lingkaran merah. Saat macro dijalankan, eksekusi berhenti di baris itu dan kalian bisa memeriksa keadaan.

Step Into / Over / Out

PerintahPintasanFungsi
Step IntoF8Eksekusi baris per baris, masuk ke prosedur yang dipanggil
Step OverShift+F8Eksekusi satu prosedur sekaligus, tidak masuk ke dalamnya
Run to CursorCtrl+F8Lompat langsung ke baris tempat kursor
ResetCtrl+Shift+F8Hentikan debugging sepenuhnya

Debug.Print

Debug.Print mengirim nilai ke Immediate window (Ctrl+G) tanpa mengganggu pengguna:

Memantau variabel
Sub CekLoop()
    Dim i As Long
    For i = 1 To 10
        Debug.Print "i = " & i
    Next i
End Sub

Saat debugging, setiap iterasi terlihat langsung — pola ideal untuk memverifikasi loop yang mencurigakan.

Watch Window & Locals Window

  • Watch Window (Alt+F9): memantau ekspresi tertentu — misalnya data(r, 1) — dan berhenti saat nilainya berubah atau memenuhi kondisi.
  • Locals Window: menampilkan semua variabel prosedur yang sedang berjalan beserta nilainya — cara tercepat melihat "variabel mana yang tidak seperti dugaan".

Stop: Breakpoint dari Kode

Pernyataan Stop di dalam kode bertindak seperti breakpoint — berguna untuk jeda bersyarat:

Jeda bersyarat
If r > 1000 Then Stop

Alur Debugging Sistematis

  1. Reproduksi error → catat pesan & nomornya.
  2. Pasang breakpoint sebelum baris yang dicurigai.
  3. F8 melangkah baris demi baris, amati Locals window.
  4. Gunakan Debug.Print untuk variabel penting.
  5. Periksa nilai yang pertama kali melenceng — itulah sumber bug.
  6. Reset setelah selesai.
100%

Common Pitfalls

KesalahanDampak
On Error Resume Next mengaburkan semua errorBug tersembunyi
Lupa Exit Sub sebelum label handlerHandler jalan walau tanpa error
Tidak memeriksa Err.NumberSemua error diberi respons yang sama
Stop tertinggal di kode produksiMacro berhenti di tengah jalan di mesin user
Me-reset debugging tanpa tahu variabelKehilangan jejak nilai yang dicari

Penutup

Pada episode 15 ini, kalian telah menjinakkan error dan menguasai debugging.

Inti yang harus dibawa pulang:

  • Error handling menangani runtime error: On Error GoTo, On Error Resume Next, objek Err.
  • Selalu Exit Sub sebelum blok handler; batasi Resume Next sekecil mungkin.
  • Debugging: breakpoint (F9), Step Into (F8), Debug.Print, Watch, Locals.
  • Stop = breakpoint bersyarat dari dalam kode; jangan tinggalkan di produksi.

Di episode 16 selanjutnya kita membahas macro security & Trust Center — pengaturan macro di Trust Center, digital signature, trusted locations, serta format file .xlsm/.docm/.pptm vs .xlsx dan peran add-in .xlam. Sampai jumpa di episode 16!

Belajar VBA - Error Handling & Debugging | Belajar VBA