1. Bu yöntemde, bir hata oluştuğu anda kodun sonuna atlamak için bir etiket kullanılır.
Sub makro1() On Error GoTo HATA [kod satırları] HATA: End Sub
2. Bu yöntemde belirlenen hatalar atlanılır ve ardından kalan talimatlar için normal hata ayıklama işlemine devam edilir. Genelde probleme çözüm olunmaz, sadece çok spesifik amaçlarda kullanılır.
Sub makro2() On Error Resume Next [kod satırları] On Error GoTo 0 [kod satırları] End Sub
3. Bu yöntemde hata ayıklama işlemi hata koduna göre daha ayrıntılı yapılır. Eğer hata yoksa makrodan çıkmak için "Exit Sub" ifadesi eklenir.
Sub makro3() On Error GoTo HATA [kod satırları] Exit Sub HATA: Select Case Err.Number Case 424 'hata kodu Exit Sub Case Else MsgBox "Bir hata oluştu. Lütfen seçiminizi tekrar kontrol edin" End Select End Sub
Örnek:
Sub Formul_Say() 'Çalışma kitabında toplam kaç adet formül olduğunu bulacağız Dim Sh As Worksheet Dim sayac1 As Double Dim sayac2 As Double For Each Sh In ThisWorkbook.Worksheets On Error GoTo HATA sayac1 = Sh.Cells.SpecialCells(xlCellTypeFormulas).Count HATADEVAM: sayac2 = sayac2 + sayac1 HATA: If Err.Number = 1004 Then sayac1 = 0 Resume HATADEVAM End If Next Sh MsgBox "Bu çalışma kitabında " & sayac2 & " adet formül var!" End Sub
Sub Yorum_Say() 'Çalışma kitabında toplam kaç adet yorum olduğunu bulacağız Dim Sh As Worksheet Dim sayac1 As Double Dim sayac2 As Double For Each Sh In ThisWorkbook.Worksheets On Error GoTo HATA sayac1 = Sh.Cells.SpecialCells(xlCellTypeComments).Count HATADEVAM: sayac2 = sayac2 + sayac1 HATA: If Err.Number = 1004 Then sayac1 = 0 Resume HATADEVAM End If Next Sh MsgBox "Bu çalışma kitabında " & sayac2 & " adet yorum var!" End Sub
Watch ekranından değişkenler takip edilebilir: