Hata ayıklamada kullanılan başlıca kodlar aşağıdaki gibidir.
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
Code language: VB.NET (vbnet)
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
Code language: VB.NET (vbnet)
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
Code language: VB.NET (vbnet)
Örnek 1:
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
Code language: VB.NET (vbnet)
Örnek 2:
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
Code language: VB.NET (vbnet)
Watch ekranından değişkenler takip edilebilir: