On Error GoTo ErrHandler:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,102
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar;

Arkadaşlar bilindiği üzere; Bir procedur içerisinde kodlarda hata meydan geldiği zaman doğrudan hata satırına yönlendirip hata mesajını msgbox kutusu üzerinde görüntüleyebiliyoruz.


Kod:
Sub Test
On Error GoTo ErrHandler:

..........
..................
.............
.............
Exit Sub
ErrHandler:
Select Case Err.Number
Case 7
MsgBox "Disket veya CD-ROM/WRITER sürücüsü boş !", vbOKOnly, "HATA !"
Case 13
MsgBox "Klasorde geçerli *.xls dosyası bulunamadı !", vbOKOnly, "HATA !"
Case 91
MsgBox "Geçerli bir klasor seçilmedi !", vbOKOnly, "Hata !"
Case Else
MsgBox "Hata oluştu !" & vbCrLf & vbCrLf & "Hata No: " & Err.Number & vbCrLf & Err.Description, vbOKOnly, "HATA !"
End Select
Err.Clear

End Sub
Burada benim öğrenmek istediğim bir modul içerindeki tüm procedurlerin içine bu kodları yazmak yerine;

Sadece bir kere yazarak tüm modul içerisinde uygulanması konusunda bildiğiniz pratik bir yöntem var mıdır?

Kısaca ben her procedur' e tek tek yazmaktan kurtulmak istiyorum. Pratik bir yol arıyorum.

Yardımlarınız için şimdiden teşekkürler...
İyi Çalışmalar.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Örnek:

Kod:
Sub Test1()
    On Error GoTo ErrHandler:
    x = 1
    y = 0
    MsgBox x / y
    Exit Sub
ErrHandler:
    Call ErrMsg
End Sub
'
Sub Test2()
    On Error GoTo ErrHandler:
    x = 0
    y = 0
    MsgBox x / y
    Exit Sub
ErrHandler:
    Call ErrMsg
End Sub
'
Sub Test3()
    Dim x As Byte, y As Integer
    On Error GoTo ErrHandler:
    x = 324
    y = 4
    MsgBox x / y
    Exit Sub
ErrHandler:
    Call ErrMsg
End Sub
'
Sub Test4()
    Dim fs, d, s
    On Error GoTo ErrHandler:
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName("X:"))
    s = s & d.VolumeName & vbCrLf
    s = s & "Free Space: " & FormatNumber(d.FreeSpace / 1024, 0)
    s = s & " Kbytes"
    MsgBox s
    Exit Sub
ErrHandler:
    Call ErrMsg
End Sub
'
Sub ErrMsg()
    Select Case Err.Number
    Case 7
        MsgBox "Disket veya CD-ROM/WRITER sürücüsü boş !", vbOKOnly, "HATA !"
    Case 13
        MsgBox "Klasorde geçerli *.xls dosyası bulunamadı !", vbOKOnly, "HATA !"
    Case 68
        MsgBox "Aygıt hazır değil!", vbOKOnly, "HATA !"
    Case 91
        MsgBox "Geçerli bir klasor seçilmedi !", vbOKOnly, "Hata !"
    Case Else
        MsgBox "Hata oluştu !" & vbCrLf & vbCrLf & "Hata No: " & Err.Number & vbCrLf & Err.Description, vbOKOnly, "HATA !"
    End Select
    Err.Clear
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,102
Excel Vers. ve Dili
Office 2013 İngilizce
Teşekkürler,

Elinize ve emeğinize sağlık...
 
Üst