EXCEL VBADA ON ERROR GoTo

 

Hataları işlemek için VBA On Error GoTo ifadesini kullanırız. Kodunuzun yürütülmesi sırasında ortaya çıkan hataları veya öngörülemeyen durumları işlemek için hata işleme, programlamanın temel bir bileşenidir. VBA'da hata işlemeyi dahil etmenin bir yolu, VBA On Error GoTo'nun kullanılmasıdır.


Bir örneğe bakalım. “Example” adında bir alt rutinimiz var. ErrorHandler adlı bir hata işleme etiketi tanımlamak için “On Error GoTo ErrorHandler” kullanırız. Alt rutinin içinde onu 0'a bölmeye çalışırız ve bu da “division by zero” hatasıyla sonuçlanır.

Hata oluştuğunda VBA, MsgBox kullanarak özel bir hata mesajı görüntülediğimiz ErrorHandler etiketine atlar.

VBA Hata Üzerine Git - Giriş

Yukarıdaki kodu çalıştırdığınızda, onu 0'a bölmeye çalıştığında "division by zero" hatasına neden olur. Daha sonra hata işleme etiketini kullanarak "An error occurred: Division by zero" hata açıklamasıyla bir mesaj kutusu görüntüler.

VBA Hata Üzerine Git - Giriş

ÖNEMLİ NOKTALAR

  1. VBA On Error ifadeleri hata yönetimi için kullanılır ve kodunuzdaki beklenmeyen hataları yönetmenize olanak tanır.
  2. VBA On Error Resume Next, bir hata oluştuktan sonra kod yürütmenin devam etmesini sağlar, “VBA On Error GoTo 0″ hata işlemeyi kapatır ve “VBA On Error GoTo Label” programı hata işleme için belirli bir etikete yönlendirir.
  3. Hataları ele alırken spesifik olun, gerektiğinde hata işlemeyi sıfırlayın ve hata ayrıntılarına erişmek için “Err” nesnesini kullanın.
  4. VBA On Error GoTo Line Number'ı kullandığınızda, kodunuzun yürütülmesi sırasında bir hata oluştuğunda programın atlaması gereken satır numarasını veya etiketi belirtirsiniz.

Hata İfadelerinde (on Error) VBA Nasıl Kullanılır? 

VBA'da "On Error" ifadelerini kullanmak, hatalar oluştuğunda bunların nasıl ele alınacağını belirtmeyi içerir. "On Error" ifadelerini kullanmanın birkaç yolu vardır.

Adım 1: Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın.

VBA Hata Üzerine Git - Kullanım - Adım 1

Adım 2: Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

VBA Hata Üzerine Git - Kullanım - Adım 2

Adım 3: Hata İşlemeyi Etkinleştir

"On Error" kullanmak için, VBA prosedürünüz önce hata işlemeyi etkinleştirmelidir. Bunu başarmak için, aşağıdaki ifadeyi kullanabilirsiniz: 

"Hata Durumunda Devam Et" [On Error Resume Next]

Bu ifade, bir hata meydana gelse bile kodunuzun çalışmaya devam etmesini sağlar. Bir hata meydana gelirse, VBA hataya neden olan satırı atlayacak ve sonraki satırı yürütmeye devam edecektir.

Adım 4: VBA Davranışında Hata İşlemeyi Tanımlayın

Hata işleme etkinleştirildikten sonra hataların nasıl işleneceğini belirleyebilirsiniz.

Bunu yapmanın üç yaygın yolu vardır:

Hata Bildirimi ÜzerineTanım
1. Hata durumunda Devam Et Sonraki [On Error Resume Next]Hata işlemeyi etkinleştirir ve bir hata oluşsa bile kodun yürütülmeye devam etmesini sağlar. Hataları yok saymak ve yürütmeye devam etmek için kullanışlıdır.
2. Hata durumunda 0'a git [On Error GoTo 0]Hata işlemeyi kapatır. Bu ifadeden sonra oluşan hatalar göz ardı edilmeyecek ve program bir çalışma zamanı hata mesajıyla durdurulacaktır.
3. Hata Durumunda Git Etiketi [On Error GoTo Label]Programın bir hata oluştuğunda atlaması gereken bir etiketi (genellikle LabelName olarak etiketlenir) tanımlar. Özel hata işleme rutinleri oluşturmanıza olanak tanır.

Adım 5: Hata İşleme Rutinleri Oluşturun

Hataları etkili bir şekilde ele almak için hata işleme prosedürleri oluşturulmalıdır. Bir hata meydana geldiğinde, bu prosedürler gerçekleştirilir.

Bu rutinler, hataları günlüğe kaydetmek, kullanıcıya bir mesaj göstermek veya diğer gerekli eylemleri gerçekleştirmek için özelleştirilebilir.

Örneğin:

ErrorHandler:

    ' Özel hata işleme rutini, örneğin bir mesaj görüntüleme veya hatayı günlüğe kaydetme

Adım 6: VBA Kodunu F5 tuşuna basarak veya VB düzenleyicideki Çalıştır butonuna tıklayarak çalıştırın .

Örnekler

Örnek 1 – Hata Durumunda Devam Et Sonraki

Bu örnekte, "On Error Resume Next" sıfıra bölme hatasını yok saymak için kullanılır. Kod yürütülmeye devam eder ve sonuç 0 olarak ayarlanır.

Adım 1: Yeni modülde ilk önce “Example1” adında yeni bir alt rutin oluşturuyoruz.

VBA Hata Üzerine Git - Örnek 1 - Adım 1

Adım 2: Ardından, “On Error Resume Next” ile hata işlemeyi etkinleştiriyoruz. Bu, VBA'ya bir hata oluşsa bile kodu yürütmeye devam etmesini söyler.

VBA Hata Üzerine Git - Örnek 1 - Adım 2

Adım 3: Bu adımda, result değişkenini tanımlıyoruz ve 10'u 0'a bölmeye çalışıyoruz. Bu işlem "sıfıra bölme" hatasına neden olacaktır.

VBA Hata Üzerine Git - Örnek 1 - Adım 3

Adım 4: Bu adımda sonucu “MsgBox” fonksiyonunu kullanarak gösteriyoruz.

VBA Hata Üzerine Git - Örnek 1 - Adım 4

Adım 5: Bu satır, hata işlemeyi varsayılan davranışına sıfırlar; hatalar, çalışma zamanı hata mesajıyla programı durdurur.

VBA Hata Üzerine Git - Örnek 1 - Adım 5

Adım 6: Şimdi kodu çalıştırın. Bu kod çalıştığında, hata işlemeyi etkinleştiren “On Error Resume Next”, programın bir hata durumunda bile çalışmaya devam etmesine izin verir.

10'u 0'a bölerken, MsgBox “Result: ” & result satırı “division by zero” hatası görünse bile yürütülecektir. Hata yok sayılır, böylece sonuç 0 olur.

Daha sonra “On Error GoTo 0” komutu kullanılarak hata işleme ilk haline döndürülür.

VBA Hata Durumunda Git - Örnek 1 - Çıktı

İşte kodun tamamı:

Sub Örnek1()

    On Error Resume Next

    Dim result As Integer

    result = 10 / 0 ‘ This will cause a division by zero error

    MsgBox “Result: ” & result ‘ This line will execute, and result will be 0

    On Error GoTo 0 ‘ Reset error handling to default

End Sub


Örnek 2 – Hata durumunda 0'a git

Bu örnekte, “On Error GoTo 0” hata işlemeyi kapatır ve sıfıra bölme hatası oluştuğunda kod durur. 

Adım 1: Yeni modülde “Example2” adında yeni bir alt rutin oluşturuyoruz.

Örnek 2 - Adım 1

Adım 2: Bu satır, “On Error GoTo 0” kullanarak hata işlemeyi kapatır. Bu satırdan sonra oluşan hatalar göz ardı edilmeyecek ve program durdurulacaktır.

Örnek 2 - Adım 2

Adım 3: Önceki örnekte olduğu gibi, 10'u 0'a bölmeye çalışıyoruz; bu da "sıfıra bölme" hatasını tetikliyor.

Örnek 2 - Adım 3

Adım 4: Yerinde bir hata işleme olmadığından (1. adımda hata işleme kapatılmıştı), bu satır yürütülmeyecek ve hata oluştuğunda program duracaktır.

VBA Hata Üzerine Git - Örnek 2 - Adım 4

Adım 5: Makroyu kaydedin ve kodu çalıştırın. Bu kod çalıştığında, hata işleme “VBA On Error GoTo 0” ile devre dışı bırakılır, bu da programın 10'u 0'a böldüğünde durmasına ve “division by zero” başlıklı bir hata mesajı görüntülemesine neden olur.

VBA Hata Üzerine Git - Örnek 2 - Adım 5

İşte kodun tamamı:

Sub Örnek2()

    On Error GoTo 0 ‘ Turn off error handling

    Dim result As Integer

    result = 10 / 0 ‘ This will cause a division by zero error

    MsgBox “Result: ” & result ‘ This line will not execute due to the error

End Sub


Örnek 3 – Hata Durumunda Git Etiketi

Bu örnekte, “On Error GoTo ErrorHandler” sıfıra bölme hatası oluştuğunda programı ErrorHandler etiketine yönlendirir. Hata mesajı kullanıcıya gösterilir.

Adım 1: Önceki örneklerde olduğu gibi, öncelikle “Example3” adında yeni bir alt rutin oluşturuyoruz.

Burada, programın bir hata oluştuğunda atlayacağı ErrorHandler adlı bir etiketi tanımlamak için “On Error GoTo ErrorHandler” kullanıyoruz.

VBA Hata Üzerine Git - Örnek 3 - Adım 1

Adım 2: Burada result adlı bir değişkeni VBA tamsayı veri türü olarak bildiriyoruz. Bu değişken bir hesaplamanın sonucunu depolamak için kullanılacaktır.

VBA Hata Üzerine Git - Örnek 3 - Adım 2

Adım 3: Bu adımda, önceki örneklerde olduğu gibi 10'u 0'a bölerek bir hesaplama yapmaya çalışacağız. Sıfıra bölme matematiksel olarak tanımsızdır ve "sıfıra bölme" hatasına neden olur.

Örnek 3 - Adım 3

Adım 4: Bu satır, hesaplamanın sonucunu içeren bir mesaj kutusu görüntülemeye çalışır. Ancak, önceki adımdaki hata nedeniyle bu satır yürütülmeyecek ve program hata işleme bölümüne atlayacaktır.

Örnek 3 - Adım 4

Adım 5: Sonra, alt rutinden çıkıyoruz. Buraya, herhangi bir hata oluşmaması durumunda programın alt rutinden zarif bir şekilde çıkabilmesi için yerleştirilmiştir.

Örnek 3 - Adım 5

Adım 6: “Sıfıra bölme” hatası oluştuğunda program ErrorHandler etiketine atlar.

Bu etiketli bölümde, Err nesnesinden elde edilen hatanın açıklamasını içeren özel bir hata mesajı görüntülemek için MsgBox'ı kullanırız. Kullanıcı, "Bir hata oluştu: Sıfıra bölme" gibi bir mesaj görecektir.

Örnek 3 - Adım 6

Adım 7: Bu kod çalıştırıldığında, 10'u 0'a bölmeye çalıştığında "sıfıra bölme" hatası üretir. Daha sonra hata işleme etiketini kullanarak "Bir hata oluştu: Sıfıra bölme" hata açıklamasıyla bir mesaj kutusu görüntüler.

Örnek 3 - Adım 7

İşte kodun tamamı:

Alt Örnek3()

    On Error GoTo ErrorHandler ‘ Define a label for error handling

    Dim result As Integer

    result = 10 / 0 ‘ This will cause a division by zero error

    MsgBox “Result: ” & result ‘ This line will not execute due to the error

    Exit Sub ‘ Exit the subroutine if no error occurred

ErrorHandler:

    MsgBox “An error occurred: ” & Err.Description ‘ Display the error message

End Sub

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...