Excel VBA Hata Yönetimi: On Error GoTo, Resume Next ve Err Kullanımı

Excel VBA Hata Yönetimi: On Error GoTo, Resume Next ve Err Kullanımı
Hata Yönetimi

1. Örnek Veri Tablosu

Aşağıdaki tabloda bazı hücrelerde hatalı veriler var. Bu tablo üzerinde hata yönetimi yöntemlerini test edeceğiz.

# A (Ürün) B (Fiyat) C (Stok)
1 Ürün Fiyat Stok
2 Laptop 15.000 10
3 Klavye (boş) 25
4 Monitör 8.500 5
5 Mouse 250 (boş)
6 Yazıcı 4.200 8
Örnek tablo (A1:C6) - Hatalı veriler: B3 (boş), C5 (boş)

Tablo Bilgisi

Tabloda 2 adet hatalı veri var: B3 (boş fiyat) ve C5 (boş stok). Bu hataları VBA ile nasıl yöneteceğimizi göreceğiz.

2. Yöntem 1: On Error GoTo ile Hata Yakalama

On Error GoTo ile hata oluştuğunda belirlediğiniz etikete gidersiniz. Böylece hata mesajı gösterip kodun çökmesini engellersiniz.

Sub HataYakala()
    On Error GoTo HataVar
    Dim toplam As Double
    toplam = Range("B2") / Range("B3")
    MsgBox "Sonuç: " & toplam
    Exit Sub
HataVar:
    MsgBox "Hata oluştu: " & Err.Description
End Sub

Kod Açıklaması

  • On Error GoTo HataVar → Hata oluşursa HataVar etiketine git
  • Range("B2") / Range("B3") → B3 boş olduğu için hata oluşur
  • Err.Description → Hata açıklamasını gösterir

Tablo: ⚠️ Hata oluşan hücreler:

# A B C
2 Laptop 🟩 15.000 10
3 Klavye ⚠️ (boş) 25
4 Monitör 8.500 5
5 Mouse 250 ⚠️ (boş)
6 Yazıcı 4.200 8
⚠️ 2 adet hatalı veri tespit edildi (B3, C5)

📌 Sonuç: On Error GoTo ile hata yakalandı ve mesaj gösterildi. Kod çökmedi.

3. Yöntem 2: On Error Resume Next ile Hata Atlama

On Error Resume Next ile hata oluştuğunda hatayı görmezden gelir ve kod çalışmaya devam eder. Excel'deki EĞERHATA() gibi.

Sub HataAtla()
    On Error Resume Next
    Dim toplam As Double
    toplam = Range("B2") / Range("B3")
    On Error GoTo 0
    MsgBox "Sonuç: " & toplam
End Sub

Kod Açıklaması

  • On Error Resume Next → Hataları atla, devam et
  • Range("B2") / Range("B3") → Hata oluşur ama atlanır
  • On Error GoTo 0 → Hata yönetimini kapat

Uyarı

Hataları görmezden gelmek bazen sorun yaratabilir. Kullanırken dikkatli olun!

Tablo: 🔵 Atlanan hatalar:

# A B C
2 Laptop 15.000 10
3 Klavye 🔵 (boş) 25
4 Monitör 8.500 5
5 Mouse 250 🔵 (boş)
6 Yazıcı 4.200 8
🔵 Hatalar atlandı, kod çalışmaya devam etti

📌 Sonuç: On Error Resume Next ile hatalar atlandı ve kod çalışmaya devam etti.

4. VBA Makroları için Ön Hazırlık

1. Geliştirici Sekmesini Aktifleştirin

Excel'de VBA kodlarını yazabilmek için önce Geliştirici sekmesini aktif etmelisiniz. Detaylı bilgi için tıklayın.

VBA - Geliştirici sekmesi
⚙️ Geliştirici sekmesini aktifleştirme

3. Modül Ekleyin

Kodlarınızı yazmak için bir Modül eklemelisiniz. Makro yazma rehberi için tıklayın.

VBA - Modül ekleme
📝 Modül ekleme

2. Visual Basic Düzenleyici'yi Açın

Alt + F11 (Windows) veya Option + F11 (Mac) ile hızlıca açabilirsiniz.

Visual Basic Düzenleyici'yi Açma
📝 Visual Basic Düzenleyici'yi Açma

4. Kodu Çalıştırın

Yazdığınız kodu çalıştırmak için F5 tuşuna basın veya Çalıştır butonuna tıklayın. VBA makro nedir? öğrenmek için tıklayın.

F5

▶️ Makroyu çalıştır

📋 Makro çalıştırma

5. Sıkça Sorulan Sorular

01 VBA'da hata yönetimi nasıl yapılır?

On Error GoTo veya On Error Resume Next ile hata yönetimi yapılır.

02 On Error GoTo ve On Error Resume Next arasındaki fark nedir?

GoTo hatayı yakalar, Resume Next hatayı atlar.

03 Err.Number ne işe yarar?

Hata numarasını döndürür. Örnek: 11 = Sıfıra bölme.

04 Mac'te VBA hata yönetimi çalışır mı?

Evet, Mac'te de aynı kodlar çalışır.

05 On Error GoTo 0 ne işe yarar?

Hata yönetimini kapatır.

06 Hata yönetimi neden önemlidir?

Makroların çökmesini engeller ve kullanıcıya anlamlı mesajlar gösterir.

💡 İpucu: Makroları çalıştırmadan önce dosyanızı yedeklemeyi unutmayın. Ctrl+S ile kaydedin.
🤖 Akıllı Arama Asistanı
💬 Merhaba! Size nasıl yardımcı olabilirim?
Excel Asistanı
👋 Merhaba! Excel ile ilgili ne öğrenmek istersin? Örn: DÜŞEYARA nasıl kullanılır?
DÜŞEYARA Pivot Tablo Gantt Şeması