Materi
VBA punya dua jenis galat. Galat kompilasi muncul sebelum makro berjalan, misalnya Variable not defined di bawah Option Explicit. Galat saat berjalan muncul di tengah eksekusi dan punya nomor serta nama. Lima yang paling sering ditemui di makro Excel:
| Nomor | Nama | Contoh penyebab |
|---|---|---|
| 6 | Overflow | 300 * 200 disimpan ke Long; hasil melewati batas tipe |
| 9 | Subscript out of range | Worksheets("Rekap") padahal tidak ada lembar bernama Rekap |
| 11 | Division by zero | Pembagi bernilai 0, termasuk variabel salah ketik yang kosong |
| 13 | Type mismatch | Teks "dua" disimpan ke variabel Long |
| 91 | Object variable or With block variable not set | Variabel objek diisi tanpa Set |
Tanpa On Error, galat saat berjalan menghentikan makro dengan pesan. On Error GoTo Penanganan melompat ke label Penanganan saat galat terjadi; Err.Number dan Err.Description menyimpan nomor dan pesannya. On Error Resume Next membuat VBA melompati pernyataan yang gagal dan lanjut ke baris berikutnya, sehingga galat bisa lolos tanpa disadari bila Err.Number tidak diperiksa. On Error GoTo 0 mematikan penanganan. Bila galat baru terjadi di dalam kode penanganan yang sedang aktif, prosedur yang sama tidak bisa menangkapnya lagi.
Sub BagiTarget()
On Error GoTo Gagal
Dim perOrang As Double
perOrang = Range("B1").Value / Range("B2").Value
Range("B3").Value = perOrang
Exit Sub
Gagal:
MsgBox "Galat " & Err.Number & ": " & Err.Description
End Sub