EXCEL VBA'DA HATA İŞLEME (ERROR HANDLER)

 

Excel VBA Hata İşleme, bir uygulama çalışırken oluşan hataları işlemek için yazılmış koda atıfta bulunur. Excel VBA'da hata işleme, VBA kodunun yürütülmesi sırasında oluşabilecek hataları öngörmek ve yönetmek için kullanılan bir programlama tekniğidir. VBA makrolarınızın sorunsuz çalışmasını sağlamaya yardımcı olur, kullanıcılara değerli geri bildirimler sağlar ve Excel uygulamalarınızda beklenmeyen çökmeleri veya hataları önler. Aşağıdaki örneği ele alın:


VBA Hata İşleme Giriş

Bu örnek, kodun çalışmasını durdurmadan hatanın nasıl ele alınacağını aşağıdaki ileti kutusunda görüntüleyerek gösterir.

VBA Hata İşleme Giriş - Çıktı

ÖNEMLİ NOKTALAR

  • Beklenmeyen hataları zarif bir şekilde yönetmek için kodunuza her zaman VBA hata işleme özelliğini ekleyin.
  • Doğru hata yönetimi, VBA kodunun düzgün çalışmasını sağlar ve programın aniden sonlanmasını önler.
  • Hata kodunu tanımlamak için “Err.Number”ı, kullanıcılara hata mesajlarını görüntülemek için “Err.Description”ı kullanın.
  • Özellikle harici veri kaynakları veya veritabanı bağlantılarıyla çalışırken hata yönetimi çok önemlidir.

Açıklama

Excel'de hata işleme VBA, kod yürütme sırasında hataları öngörür, algılar ve çözer. VBA'da üç tür hata vardır: Sözdizimi, Derleme ve Çalışma Zamanı. Sözdizimi hataları, VBA kod sözdizimini kodda derlediğinde oluşan Derleme hatalarında bir sorun bulduğunda oluşur. Derleme hataları, VBA kodu derlerken oluşur. Bir hatayı işleyecek belirli bir kod yoksa, beklenmeyen bir hata olarak kabul edilir. Bu beklenmeyen hataları işlemek için VBA hata işleme ifadeleri kullanılır. VBA Hata işleme 3022, Microsoft Access'te tabloda istenen değişikliklerin birincil anahtarı veya benzersiz dizini ihlal edeceği için başarısız olduğunu kullanıcıya bildiren bir form hatasıdır.

VBA hata işleme süreci, herhangi bir hata oluşmadan önce kod yazarken gerçekleşir. VBA'da hataları işlemek için birkaç  'On Error'  ifadesi kullanılabilir.


VBA Kodundaki Hatalar Nasıl Ele Alınır?

Excel VBA'da hata yönetimi aşağıdaki adımları izleyerek yapılabilir:

Adım 1: Araç çubuğundaki “ Geliştirici ” bölümüne gidin ve “ Visual Basic ” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Düzenleyicisi açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.

Geliştirici - Visual Basic
Ekle - Modül

Adım 2: Sıfıra bölme hatasını işleyen bir alt prosedür bildirin.

VBA Hata İşleme - Sap - Adım 1

Adım 3: Koda başlamadan önce Hata koşulu olan Errorhandler'ı bildirin.

VBA Hata İşleme - İşleme - Adım 3

Adım 4: Bölme işlemini gerçekleştirmek için üç değişken tanımlayın: temettü, bölen ve bölüm.

VBA Hata İşleme - Sap - Adım 4

Adım 5: Kullanıcıdan temettü ve bölen değerlerini alın.

VBA Hata İşleme - Sap - Adım 5

Adım 6: Bölüneni ve böleni böl ve değeri sonuç değişkeninde sakla.

VBA Hata İşleme - Sap - Adım 6

Adım 7: Kullanıcının bölen olarak 0 girmesi durumunda oluşabilecek hatalarla başa çıkmak için Errorhandler koşulunu tanımlarız.

VBA Hata İşleme - Sap - Adım 7

Kod:

Sub DivideNumbers()
On Error GoTo ErrorHandler
Dim dividend As Double
Dim divisor As Double
Dim result As Double
dividend = InputBox(“Enter the dividend:”)
divisor = InputBox(“Enter the divisor:”)
result = dividend / divisor
MsgBox “The result is: ” & result
Exit Sub
ErrorHandler:
MsgBox “An error has occurred: ” & Err.Description
Err.Clear
End Sub

Adım 8: İki sayıyı bölmek için kodu çalıştırın. Çıktı aşağıda gösterilmiştir:

VBA Hata İşleme - İşleme - Adım 8 - Bölünme
VBA Hata İşleme - İşleme - Adım 8 - Bölücü
VBA Hata İşleme - Sap - Adım 8 - Çıktı

VBA'da Hata İşlemenin nasıl çalıştığına bakalım. Daha fazlasına bakalım.


Örnek 1

Değeri girdiğimizde bir öğenin kategorisini bulmak istediğimiz bir tablomuz olduğunu varsayalım. Bu, VBA Excel Vlookup işlevi kullanılarak yapılabilir . VBA'daki Vlookup (Dikey Arama) işlevi belirli bir satırın değerini alır ve aynı satırın ancak farklı bir sütunun başka bir öğesinin değerinin değerini döndürür.

VBA Hata İşleme - Örnek 1

Vlookup'ta aradığımız değer yoksa, bir hata verecektir. Burada, VBA hata işleme Vlookup teknikleriyle nasıl başa çıkılacağını öğreniyoruz.

Adım 1: VLOOKUP fonksiyonunu uygulayacak bir alt rutin bildirmeye başlayın.

VBA Hata İşleme - Örnek 1 - Adım 1

Adım 2: Herhangi bir hata durumunda Errorhandler ifadesine geçmek için VBA GoTo ifadesini kullanın .

VBA Hata İşleme - Örnek 1 - Adım 2

Adım 3: Arama değerini, tablonun aralığını ve VLookup işlevinin döndürdüğü sonucu depolamak için üç değişken atayın.

VBA Hata İşleme - Örnek 1 - Adım 3

Adım 4: Kullanıcıdan arama terimini alın.

VBA Hata İşleme - Örnek 1 - Adım 4

Adım 5: Kullanıcıdan gelen değeri kullanarak, dört parametreye ihtiyaç duyan VLookup fonksiyonunu gerçekleştirin:

  • Değer
  • Tablonun aralığı
  • Sütun Numarası
  • Yanlış veya Doğru (Tam eşleşme için Yanlış, yaklaşık eşleşme için Doğru)
VBA Hata İşleme - Örnek 1 - Adım 5

Daha sonra sonucu yazdırın.

Adım 6: Bir hata olduğunda Errorhandler etiketini bildirin.

VBA Hata İşleme - Örnek 1 - Adım 6

Kod:

Sub lookupValue()
On Error GoTo ErrorHandler
Dim lookupValue As String
Dim lookupRange As Range
Dim result As Variant
lookupValue = InputBox(“Enter the lookup value:”)
Set lookupRange = Range(“A2:B10”)
result = WorksheetFunction.VLookup(lookupValue, lookupRange, 2, False)
MsgBox “The result is: ” & result
Exit Sub
ErrorHandler:
Debug.Print “An error has occurred: ” & Err.Description
Err.Clear
End Sub




Adım 5: Kodu çalıştırın ve çıktıyı görüntüleyin:

VBA Hata İşleme - Örnek 1 - Adım 7
VBA Hata İşleme - Örnek 1 - Adım 7 - Çıktı

Hata yönetimi için:

VBA Hata İşleme - Örnek 1 - handle
VBA Hata İşleme - Örnek 1 - tutamak - Çıktı

Örnek 2

Sistemimizde bir dosyayı aramamız ve açmamız gereken bir örneği ele alalım. Ancak, dosya yoksa Excel "dosya bulunamadı" hatası verecektir. VBA Hatası işleme dosyası bulunamadı hatasının nasıl ele alınacağını görelim.

Adım 1: Bir Excel dosyasını açmak için bir alt prosedür başlatın.

Örnek 2

Adım 2: Kodun ErrorHandler etiketine atlamasını sağlayan bir GoTo ifadesi bildirin.

Örnek 2 - Adım 2

Adım 3: Bir dize değişkeni tanımlayın ve kullanıcının açmak için verdiği dosya yolunu saklayın.

Örnek 2 - Adım 3

Adım 4: Kullanıcının verdiği dosyayı açın ve kapatın. Yapılan değişikliklerin kaydedilmemesi için koşulları ayarlayın.

Örnek 2 - Adım 4

Adım 5: Hata açıklamasıyla ErrorHandler etiketini tanımlayın ve karışıklığı önlemek için önceki hataları temizleyin.

Örnek 2 - Adım 5

Kod:

Sub OpenFile()
On Error GoTo ErrorHandler
Dim filePath As String
filePath = InputBox(“Enter the file path:”)
Workbooks.Open filePath
ActiveWorkbook.Close SaveChanges:=False
Exit Sub
ErrorHandler:
MsgBox “An error has occurred: ” & Err.Description
Err.Clear
End Sub

Adım 6: Dosya açma kodunu çalıştırın. Çıktı aşağıda gösterilmiştir:

Örnek 2 - Adım 6

Excel dosyası popu.xlsx'i açar ve kapatır. İhtiyacınız olursa, ona uygulanacak ek işlevler ekleyebilirsiniz.

Hata yönetimi için:

Örnek 2 - Adım 6 - dosya adı
Örnek 2 - Çıktı

Dikkat Edilmesi Gereken Önemli Noktalar

  • Beklenmeyen hataları yönetmek için VBA kodunuza her zaman hata işleme özelliğini ekleyin .
  • VBA'nın hatalar oluştuğunda nasıl ele alacağını tanımlamak için "Hata Durumunda" ifadesini kullanın.
  • Dosya işleme, veritabanı bağlantıları veya harici veri etkileşimleri gibi kritik işlemlerle ilgili hata yönetimini ekleyin.
  • Farklı Excel sürümlerinde değişebileceğinden, yalnızca belirli hata numaralarına güvenmekten kaçının.
  • Fark edilmeyebilecek olası sorunları önlemek için “Hata Durumunda Devam Et” seçeneğini kullanırken dikkatli olun.
  • Gerekmediğinde hata işlemeyi devre dışı bırakmak ve varsayılan davranışı geri yüklemek için “Hata Durumunda 0'a Git” öğesini kullanın.
  • Kritik olmayan bölümler için “On Error Resume Next” seçeneğini kullanmayı düşünün ancak bunu genel olarak kullanmaktan kaçının.

1. VBA'da farklı hata işleme türleri nelerdir?

• On Error Resume Next: Hataları yok sayar ve bir sonraki kod satırıyla devam eder. Çoğunlukla döngüde VBA Hata işleme ile uğraşırken yapılır.
• On Error GoTo 0: Hata işlemeyi devre dışı bırakır.
 On Error GoTo [Label]: Bir hata oluştuğunda belirtilen etikete atlar.
 On Error GoTo ErrorHandler: Ortak bir hata işleme alt rutinine (ErrorHandler) atlar.
 Err.Number: Hata numarasını içeren özellik.
 Err.Description: Hata açıklamasını içeren özellik.
 Err.Clear: Geçerli hatayı temizler.

2. VBA'da runtime error 1004 hata yönetimi nedir?

VBA'da 1004 numaralı çalışma zamanı hatası, "Uygulama tanımlı veya Nesne tanımlı hata" olarak bilinir.
 Bir çalışma sayfası veya aralık gibi bir Excel nesnesinde sorun olduğunda oluşur.
 Yaygın nedenler arasında var olmayan veya korunan bir aralığa başvurulması veya bir nesneyle yanlış bir yöntem veya özellik kullanılması yer alır.
 Uygun hata işleme, bu hatanın nedenini teşhis etmeye ve çözmeye yardımcı olabilir.

3. VBA'da hata yönetimi için en iyi uygulama nedir?

• Her Zaman Hata İşlemeyi Uygulayın: Beklenmeyen hataları işlemek için VBA kodunuza hata işlemeyi ekleyin.
 Hata Üzerine Git [Etiket] Kullanın: Kodu belirli bir hata işleme rutinine yönlendirmek için “Hata Üzerine Git [Etiket]” öğesini kullanın.
 Anlamlı Mesajlar Sağlayın: Sorun gidermeye yardımcı olmak için net ve açıklayıcı hata mesajları görüntüleyin.
• Kritik İşlemleri Ele Alın : Beklenmeyen çökmeleri önlemek için kritik işlemler etrafında hata işlemeyi kullanın.
• Hata Senaryolarını Test Edin: Geliştirme sırasında hata işleme kodunuzu farklı hata senaryolarıyla test edin.
• “Hata Üzerine Devam Et Sonraki”nden Kaçının: Hataları gizleyebileceği ve hata ayıklamayı zorlaştırabileceği için “Hata Üzerine Devam Et Sonraki” öğesini nadiren kullanın.
• Hataları Temizle: İstenmeyen hata yayılmasını önlemek için işleme sonrasında hataları temizlemek için “Err.Clear” öğesini kullanın.
• Günlüğe Kaydetmeyi Göz Önünde Bulundurun: Uygulamadaki sorunları izlemek ve analiz etmek için hataları günlüğe kaydetmeyi göz önünde bulundurun.

Yorum Gönder

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