EXCEL VBADA ON ERROR RESUM NEXT

 

VBA On Error Resume Next, hataları belirli bir şekilde ele almak için kullanılan bir ifadedir. VBA'ya bir hata durumunda bile kod yürütmeyi sürdürmesini söyler, böylece hatayı göz ardı eder ve sonraki kod satırına geçer. Büyük veri kümelerini veya harici veri kaynaklarını işlerken olduğu gibi, herhangi bir hatadan bağımsız olarak kod çalıştırmak istediğiniz durumlarda yardımcı olabilir.

VBA On Error Resume Next'in nasıl kullanılacağını görmek için bir örneğe bakalım. İlk olarak, hataları şimdilik beklemeye almamızı sağlayan VBA On Error Resume Next'i uygularız. Daha sonra, genellikle çalışma zamanında bir hata oluşturan sıfıra bölme işlemini (1 / 0) deneriz.

VBA Hata Durumunda Devam Et Sonraki 1
VBA Hata Durumunda Devam Et Sonraki 1-1

Ancak, VBA On Error Resume Next nedeniyle kod durmadan çalışmaya devam eder. Daha sonra, Immediate penceresinde “Value: 0” görüntülemek için “Debug.Print” ifadesini kullanırız. Bu, bir bölme işlemi hatası olduğunda bile kodun aniden sonlanmadığını gösterir ve daha fazla görev gerçekleştirmemize olanak tanır.

VBA Hata Durumunda Devam Et Sonraki 1-2

ÖNEMLİ NOKTALAR

  1. VBA On Error Resume Next ifadesi, hatalar oluştuğunda bile kodun yürütülmesine devam etmek için kullanılır ve hataları seçici bir şekilde işlemenize olanak tanır.
  2. Hataları uygun şekilde ele almak için VBA On Error Resume Next kullandıktan sonra “Err.Number” kullanarak hataları kontrol etmek önemlidir.
  3. VBA On Error Resume Next End'i etkinleştirmek için, sonraki kod bloklarında istenmeyen hata işlemeyi önlemek amacıyla “On Error GoTo 0” seçeneğini kullanarak normal hata işlemeye geri dönebilirsiniz.
  4. For veya While döngüleri gibi döngülerin içinde, VBA On Error Resume Next in Loop uygulanabilir. Döngü yinelemeleri sırasında hatalar oluşsa bile kesintisiz kod yürütülmesini sağlar.

VBA'da Error Resume Next Nasıl Kullanılır?

VBA On Error Resume Next'i kullanmak basittir ve aşağıdaki adımları içerir:

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

VBA 1'de Error Resume Next Nasıl Kullanılır

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

VBA 1-1'de Error Resume Next Nasıl Kullanılır

Adım 3: Bir alt rutin oluşturduktan sonra, VBA'da hataları işlemek istediğiniz kod bloğunun başına VBA On Error Resume Next ifadesini yerleştirin .

Sub ExampleSubRoutine()

    On Error Resume Next

    ‘ Your code here

End Sub

Adım 4: VBA On Error Resume Next ifadesinden sonra hatalar oluşsa bile yürütülmesini istediğiniz kodu yazın.

Adım 5: Kodu çalıştırdıktan sonra Err nesnesini kullanarak bir hata oluşup oluşmadığını kontrol edebilirsiniz.

If Err.Number <> 0 Then

    ‘ Handle the error here

End If

Adım 6: Kodun belirli bir bölümünden sonra standart hata işleme davranışına geri dönmek için VBA On Error GoTo 0 ifadesini kullanın .

On Error GoTo 0

Adım 7: Makroyu kaydettikten sonra kodu çalıştırın. VBA On Error Resume Next satırının bir sonucu olarak hataların göz ardı edildiğini fark edeceksiniz.

Örnekler

Örnek 1 – Eksik Çalışma Sayfasını Ele Alma

Bu örnekte, bir çalışma sayfası olan “Sheet2”ye başvurmaya çalışıyoruz. Bulunamazsa, başvurunun “Hiçbir Şey” olup olmadığı belirlenmeden önce hata VBA On Error Resume Next kullanılarak yok sayılır.

Adım 1: Bu adımda, Example1 alt yordamını tanımlıyoruz ve hatalar oluşsa bile kodun çalışmaya devam etmesini sağlamak için On Error Resume Next ifadesini ekliyoruz.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1

Adım 2: Burada, bir çalışma sayfasını temsil etmek için bir "ws" değişkeni bildiriyoruz. Ardından, "ws" değişkenini "ThisWorkbook.Sheets("Sheet2")." kullanarak çalışma kitabındaki "Sheet2" adlı bir çalışma sayfasına başvurması için ayarlamayı deniyoruz. Çalışma sayfası mevcutsa, başvuru başarıyla ayarlanacaktır; aksi takdirde, "ws" "Nothing" olacaktır.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1-1

Adım 3: Çalışma sayfası referansını ayarlamayı denedikten sonra, hata işlemeyi varsayılan davranışına sıfırlamak için On Error GoTo 0'ı kullanırız.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1-2

Adım 4: Bu adımda, 'ws' değişkeninin “Hiçbir Şey” olup olmadığını kontrol ediyoruz (çalışma sayfasının bulunmadığını gösterir). Eğer öyleyse, çalışma sayfasının bulunduğu anlamına gelir ve bir mesaj kutusu “Çalışma sayfası bulundu: ” ifadesini ve ardından çalışma sayfası adını görüntüler.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1-3

Eğer ws Hiçbir Şey ise, çalışma sayfası bulunamadı anlamına gelir ve bir mesaj kutusu “Çalışma Sayfası Bulunamadı” görüntüler.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1-4

Adım 5: Bu kodun çıktısı, çalışma kitabında “Sheet2” adlı çalışma sayfası mevcutsa “Worksheet found: Sheet2” metninin yer aldığı bir mesaj kutusu olacaktır.

Ancak bu durumda çalışma sayfası mevcut değildir ve bu nedenle "Çalışma sayfası bulunamadı" mesajı görüntülenir.

VBA Hata Durumunda Devam Etme Sonraki Örnek 1-5

İşte kodun tamamı:

Sub Example1()

    On Error Resume Next

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets(“Sheet2”)

    On Error GoTo 0

        If Not ws Is Nothing Then

        MsgBox “Worksheet found: ” & ws.Name

    Else

        MsgBox “Worksheet not found.”

    End If

End Sub

Örnek 2 – Sıfıra Bölmeyi Göz Ardı Etme

Bu örnekte, kod sıfıra bölmeye çalışır. VBA On Error Resume Next hatayı yok sayar ve ardından bir hatanın oluşup oluşmadığını belirlemek için “Err.Number”ı kullanır.

Adım 1: Yeni modülde, Example2 alt yordamını tanımlıyoruz ve hatalar oluşsa bile kodun çalışmaya devam etmesini sağlamak için On Error Resume Next ifadesini ekliyoruz.

VBA Hata Durumunda Devam Etme Sonraki Örnek 2

Adım 2: Burada, bir bölmenin sonucunu depolamak için result değişkenini bildiriyoruz. 10'u 0'a bölmeye çalışıyoruz, bu da "Division by zero" hatasını tetikleyecektir.

VBA Hata Durumunda Devam Etme Sonraki Örnek 2-1

Adım 3: Bölme işlemini gerçekleştirdikten sonra (bu bir hatayla sonuçlanacaktır), hata işlemeyi varsayılan davranışına sıfırlamak için On Error GoTo 0'ı kullanırız.

Hata Durumunda VBA Devam Ettirme Sonraki Örnek 2-3

Adım 4: Bu adımda, Err.Number'ı inceleyerek bir hata olup olmadığını kontrol ediyoruz. Err.Number 0'a eşit değilse, bölme sırasında bir hata meydana geldiği anlamına gelir ve bir mesaj kutusu "Error: " ve ardından hata açıklamasını görüntüler.

VBA Hata Durumunda Devam Etme Sonraki Örnek 2-4

Eğer Err.Number 0 ise, bu herhangi bir hata oluşmadığı anlamına gelir ve VBA'da bir mesaj kutusu, sonucun değerinin ardından "Sonuç:" ifadesini görüntüler.

VBA Hata Durumunda Devam Etme Sonraki Örnek 2-5

Adım 5: Bu kod çalıştırıldığında “Sonuç: Sonsuzluk” sonucunu gösterir çünkü VBA On Error Resume Next'i kullandık; bu da VBA'in sıfıra bölmeyi çalışma zamanı hatası tetiklemek yerine özel bir değer olan “Sonsuzluk” döndürdüğünü düşünmesine neden olur.

VBA Hata Durumunda Devam Etme Sonraki Örnek 2-6

İşte kodun tamamı:

Sub Example2()

    On Error Resume Next

    Dim result As Double

    result = 10 / 0

    On Error GoTo 0

        If Err.Number <> 0 Then

        MsgBox “Error: ” & Err.Description

    Else

        MsgBox “Result: ” & result

    End If

End Sub

Örnek 3 – Çalışma Sayfaları Arasında Döngü

Bu örnekte, kod tüm çalışma kitabında yineleme yaparken her çalışma sayfasındaki A1 hücresinin değerini yazdırmaya çalışır. VBA On Error Resume Next in Loop özelliği, belirli sayfalarda erişim hataları olduğunda bile döngünün çalışmaya devam etmesini sağlar.

Adım 1:   Burada öncelikle Example3 alt yordamını tanımlıyoruz ve hatalar oluşsa bile kodun çalışmaya devam etmesini sağlamak için On Error Resume Next ifadesini ekliyoruz.

VBA Hata Durumunda Devam Etme Sonraki Örnek 3

Adım 2: Burada, bir çalışma sayfasını temsil etmek için bir "ws" değişkeni bildiriyoruz. Sonra, çalışma kitabındaki (ThisWorkbook.Sheets) tüm çalışma sayfalarını yinelemek için bir "For Each" döngüsü kullanıyoruz.

VBA Hata Durumunda Devam Etme Sonraki Örnek 3-1

Adım 3: Şimdi, döngünün içinde, her çalışma sayfasının adını ve o çalışma sayfasındaki A1 hücresinin değerini yazdırmak için “Debug.Print”i kullanıyoruz.

VBA Hata Durumunda Devam Etme Sonraki Örnek 3-2

Adım 4: Döngüyü tamamladıktan sonra, hata işlemeyi varsayılan davranışına sıfırlamak için On Error GoTo 0'ı kullanırız.

VBA Hata Durumunda Devam Etme Sonraki Örnek 3-3

Adım 5: Bu kodu çalıştırdığınızda, çalışma kitabındaki tüm çalışma sayfalarında döngüye girecektir. Her çalışma sayfası için, adını ve A1 hücresinin değerini Hemen penceresinde yazdıracaktır.

Çıktı, çalışma sayfası adlarının ve bunlara karşılık gelen değerlerin Immediate penceresinde yer aldığı bir liste olacaktır.

VBA Hata Durumunda Devam Etme Sonraki Örnek 3-4

İşte kodun tamamı:

Sub Example3()

    On Error Resume Next

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Sheets

        Debug.Print ws.Name & “: ” & ws.Cells(1, 1).Value

    Next ws

    On Error GoTo 0

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...