EXCEL VBADA ON ERROR GoTo 0

 


VBA On Error Goto 0, bir prosedürde hata işlemeyi kapatmak veya devre dışı bırakmak için kullanılan bir ifadedir. VBA'da hata işleme, kodunuzun yürütülmesi sırasında oluşabilecek çalışma zamanı hatalarıyla başa çıkmanızı sağlar.


On Error Goto 0 ifadesi hata işleme davranışını varsayılana sıfırlar, yani bir hata oluşursa VBA kodun yürütülmesini durdurur ve varsayılan hata mesajını görüntüler. On Error Resume Next veya On Error Goto ifadeleri kullanılarak daha önce ayarlanmış olabilecek herhangi bir özel hata işlemeyi etkili bir şekilde kapatır.

Aşağıdaki örneği ele alalım:

VBA Hata Durumunda Git 0 - 1

Burada, "subscript out of range" hatasının bir simülasyonu yapılır. Üç elemanlı bir dizi oluşturulur, ancak dizinin 4. basamağı çağrılır, bu da mevcut değildir ve dolayısıyla bir hata oluşturur. Bu hata yakalanır ve yazdırılır, ardından hata değeri "On Error GoTo 0" ifadesiyle varsayılan değer olan 0'a ayarlanır. Bunun için çıktı aşağıda gösterilmiştir.

VBA Hata Durumunda Git 0 - 1-1

ÖNEMLİ NOKTALAR
  • Hata Durumunda 0'a Git, VBA'da hata işleme davranışını varsayılan durumuna sıfırlayan bir ifadedir.
  • On Error Resume Next veya On Error Goto [label] kullanılarak ayarlanmış olabilecek herhangi bir özel hata işlemeyi kapatır veya devre dışı bırakır.
  • On Error Goto 0 kullanıldıktan sonra, kodda bir hata oluşursa, VBA varsayılan hata işleme davranışına geri döner. Bu genellikle programın yürütülmesini durdurmayı ve standart bir hata mesajı görüntülemeyi içerir.
  • Genellikle yalnızca kodun belirli bölümlerine özel hata işleme uygulamak ve geri kalanı için varsayılan hata işlemeye geri dönmek istediğinizde kullanılır.

On Error GoTo 0 ifadesi nasıl kullanılır?

VBA On Error GoTo ifadesini uygulamak için aşağıdaki adımları takip edebilirsiniz .

Adım 1: Excel Çalışma Kitabını açın ve Excel araç çubuğunda Geliştirici sekmesini seçin. “Visual Basic”i seçin. Kodlamaya başlayabileceğiniz VBA Düzenleyicisi açılır.

On Error GoTo 0 Statement 1 nasıl kullanılır

Adım 2: VBA Editöründe araç çubuğunda “Ekle” butonuna tıklayın ve “Modül” seçeneğini seçin.

On Error GoTo 0 İfadesi 1-1 Nasıl Kullanılır

Adım 3: VBA'nın hata işlemesini gerçekleştirecek bir alt rutin yazın.

On Error GoTo 0 İfadesi 1-2 nasıl kullanılır

Adım 4: İfadelere başlamadan önce, VBA On Error GoTo 0 Resume Next'i çağırarak hata işlemeyi başlatın.

Hata Durumunda GoTo 0 İfadesi 1-3 nasıl kullanılır

Adım 5: Dosya Gezgini'ni açmak ve kapatmak için bir Tamsayı başlatın.

On Error GoTo 0 İfadesi 1-4 nasıl kullanılır

Adım 6: Tamsayı değişkenine FreeFile anahtar sözcüğünü atayın. Bununla, Excel'den sisteminizdeki Dosya Gezgini'ni açabilir ve görüntüleyebilirsiniz.

Hata Durumunda 0'a Git İfadesi 1-5 nasıl kullanılır

Adım 7: Excel VBA'da dosya gezgini ile sisteminizde olmayan bir dosyayı açmayı deneyin.

Hata Durumunda 0'a Git İfadesi 1-6 nasıl kullanılır

Bu dosya mevcut olmadığından bir hata verecektir. Bu hata, “On Error Resume Next” bildirimi nedeniyle göz ardı edilir.

Adım 8: Hata numarasının 0 olup olmadığını kontrol ederek herhangi bir hata olup olmadığını kontrol edin. VBA On Error GoTo 0 Err.Number 0 değilse, bir hata olduğu anlamına gelir.

On Error GoTo 0 İfadesi 1-7 nasıl kullanılır

Adım 9: If ifadesi doğruysa hata numarasını ve açıklamasını bir mesajda yazdırın.

On Error GoTo 0 İfadesi 1-8 nasıl kullanılır

vbNewLine  ,  bu sabitten sonra yazılan ifadeyi bir sonraki satırda yazdırılacak şekilde yazmak için kullanılır. Mesaj kutusu işlevinden sonra, VBA On Error Goto 0 Err.Clear işlemini gerçekleştirin.

Adım 10: Hata parametresini varsayılana ayarlayarak sıfırlayın.

On Error GoTo 0 İfadesi 1-9 nasıl kullanılır

Kod:

Sub ExampleOnErrorHandler()

    On Error Resume Next

    Dim fileNumber As Integer

    fileNumber = FreeFile

    Open “NonExistentFile.txt” For Input As fileNumber

    If Err.number <> 0 Then

        MsgBox “Error opening file: ” & Err.Description & vbNewLine & _

               “Error number: ” & Err.number

        Err.Clear

    End If

    On Error GoTo 0

End Sub

Adım 11: Excel VBA Editöründeki etkinlik çubuğundaki “F5” veya “Çalıştır” simgesine tıklayın. Çalıştırılacak alt rutini seçin ve hata türünü ve numarasını gösteren bir mesaj kutusu açılır.

Hata Durumunda GoTo 0 İfadesi 1-10 nasıl kullanılır

Artık VBA On Error GoTo 0'ı kullanarak hata yönetimini nasıl yapacağınızı öğrendiniz.


Örnekler

Aşağıdaki ilginç örneklere bakarak hatalarla nasıl etkili bir şekilde başa çıkabileceğinizi görebilirsiniz.

Örnek 1

Sayıları bölmek istediğiniz bir uygulamayı düşünün. VBA'nın sıfıra bölme hatasını işlemeniz gerekir. "On Error GoTo 0" ifadesiyle hatayı atlayabilir ve ayrıca yakalayıp görüntüleyebilirsiniz. Hata işleme yapıldığında ve yapılmadığında yürütmedeki farklılıkları aşağıda görebilirsiniz.

Adım 1: Sıfıra bölme hatasını yakalayacak bir alt program oluşturun.

Hata Durumunda 0'a Git Örnek 1

Adım 2: Koddaki hatalara rağmen alt rutini çalıştırmaya devam edecek kodu yazın.

Hata Durumunda 0'a Git Örnek 1-1

Adım 3: Hatayı yakalamak için sayıyı 0'a bölün, gösterildiği gibi.

Hata Durumunda 0'a Git Örnek 1-2

Adım 4: Alt rutinin hata numarasının sıfıra eşit olup olmadığını kontrol edin. Eğer öyleyse, kodda veya alt rutinde bir hata olduğu anlamına gelir.

Hata Durumunda 0'a Git Örnek 1-3

Adım 5: Hata açıklamasını bir mesaj kutusuna yazdırın ve yazdırma işleminden sonra hata önbelleğini silmek için hatayı temizleyin.

Hata Durumunda 0'a Git Örnek 1-4

Adım 6: VBA Hata numarasını 0'a sıfırlayın.

Hata Durumunda 0'a Git Örnek 1-5

Adım 7: “On Error GoTo 0” ifadesini kullanmadan 0 hatasına göre başka bir bölme işlemi gerçekleştirin.

Hata Durumunda 0'a Git Örnek 1-6

Kod:

Sub EgErrorHandler1()

    On Error Resume Next

    Dim result As Integer

    result = 1 / 0

    If Err.number <> 0 Then

        MsgBox “An error occurred: ” & Err.Description

        Err.Clear

    End If

    On Error GoTo 0

    Dim value As Integer

    value = 2 / 0

End Sub

Adım 8: Kodu çalıştırmak için “F5”e basın ve çalıştırmak istediğiniz alt rutini seçin. “On Error GoTo 0” ile şunu elde ederiz:

Hata Durumunda 0'a Git Örnek 1-7

İkinci ifade için hata ifadesi olmadığında hata alırız.

Hata Durumunda 0'a Git Örnek 1-8

Örnek 2

Bu örnekte, bir Integer dizisine bir dize değişkeni eklemeye çalışırken bir tür uyuşmazlığı hatasıyla karşılaşacağız.

Adım 1: VBA Tür Uyuşmazlığı hataları için Hata işleme gerçekleştirmek üzere bir alt rutin başlatın . Daha önce görüldüğü gibi, hatalara rağmen kodu çalıştırmak için, ifadeyi bildirmeden önce “On Error Resume Next”i kullanırsınız.

Hata Durumunda 0'a Git Örnek 2
Hata Durumunda 0'a Git Örnek 2-1

Adım 2: VBA'da bir tamsayı dizisi bildirin ve bir dize değişkeni girmeyi deneyin.

Hata Durumunda 0'a Git Örnek 2-2

Adım 3: Hata numarasının sıfır olup olmadığını kontrol ederek alt programda herhangi bir hata olup olmadığını kontrol edin.

Hata Durumunda 0'a Git Örnek 2-2

Eğer 0'a eşit değilse hata var demektir.

Adım 4: If ifadesinin doğru olması durumunda hata açıklamasını ve hata numarasını bir mesaj kutusuna yazdırın.

Hata Durumunda 0'a Git Örnek 2-4

Yazdırdıktan sonra Hata önbelleğini temizleyin.

Adım 5: Daha sonra hata işlemeyi devre dışı bırakın.

Hata Durumunda 0'a Git Örnek 2-5

Adım 6: Kodu çalıştırmak için bir bölme ifadesi gerçekleştirin. Bölümü Immediate sekmesinde yazdırın.

Hata Durumunda 0'a Git Örnek 2-6
Hata Durumunda 0'a Git Örnek 2-7

Kod:

Sub EgErrorHandler2()

    On Error Resume Next

    Dim myArray(1 To 3) As Integer

    myArray(2) = “NotANumber”

    If Err.number <> 0 Then

        MsgBox “An error occurred: ” & Err.Description & vbNewLine & _

               “Error number: ” & Err.number

        Err.Clear

    End If

    ‘ Disable error handling with On Error Goto 0

    On Error GoTo 0

    Dim result As Double

    result = 10 / 2

    Debug.Print result

End Sub

Adım 8: Kodu çalıştırın. Hatayı gösteren bir Mesaj Kutusu alacaksınız.

Hata Durumunda 0'a Git Örnek 2-8

Mesaj kutusu kapatıldıktan sonra bölüm Hemen sekmesinde yazdırılır.

Hata Durumunda 0'a Git Örnek 2-9

Örnek 3

Bu örnekte, var olmayan bir koleksiyon dizinini çağırarak geçersiz bir prosedür çağrısını simüle ediyorsunuz. Bu , VBA Koleksiyon değişkenlerine özgüdür .

Adım 1: Geçersiz yordam çağrısı hatasını çoğaltmaya çalışan alt yordamı adlandırın.

Hata Durumunda 0'a Git Örnek 3

Adım 2: Kodun çalışmasını durdurabilecek hata satırlarını atlayarak Hata işlemeyi başlatın.

Hata Durumunda 0'a Git Örnek 3-1

Adım 3: VBA kodunda bir koleksiyon bildirin. Mevcut koleksiyonlara değer eklememek için yeni bir koleksiyon bildirin.

Hata Durumunda 0'a Git Örnek 3-2
Hata Durumunda 0'a Git Örnek 3-3

Adım 4: Koleksiyondaki öğeler için anahtarları ve değerleri gösterildiği gibi sağlayın.

Hata Durumunda 0'a Git Örnek 3-4

Adım 5: Bir değişkeni çağırın ve hatayı simüle etmek için var olmayan bir anahtarın değerini çağırın.

Hata Durumunda 0'a Git Örnek 3-6

Adım 6: VBA'da If-koşulu kullanarak hataların varlığını kontrol edin.

Hata Durumunda 0'a Git Örnek 3-7

Adım 7: Hata varsa hata numarasını ve açıklamasını yazdırın. If ifadesini yürütecektir.

Hata Durumunda 0'a Git Örnek 3-8

Adım 8: “On Error GoTo 0” ifadesi ile hata değerini sıfırlayın veya hata işleme özelliğini kapatın.

Hata Durumunda 0'a Git Örnek 3-9

Kod:

Sub EgErrorHandler3()

    On Error Resume Next

    Dim myCollection As Collection

    Set myCollection = New Collection

    myCollection.Add “Item 1”, “Key1”

    myCollection.Add “Item 2”, “Key2”

    Dim item As Variant

    item = myCollection(“Key3”)

    ‘ Check for errors

    If Err.number <> 0 Then

        MsgBox “An error occurred: ” & Err.Description & vbNewLine & _

               “Error number: ” & Err.number

        Err.Clear

    End If

    On Error GoTo 0

End Sub

Adım 9: Yeşil ok düğmesine basarak yukarıdaki alt rutini çalıştırın. Aşağıda gösterildiği gibi bir mesaj kutusu açılacaktır.

Hata Durumunda 0'a Git Örnek 3-10



Yorum Gönder

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