On Error Resume Next: Excel VBA'da Hata İşleme

  • Bunu Paylaş
Hugh West

Microsoft Excel VBA'da hata işleme kritik görevlerden biridir. Bir kodlayıcıysanız, mükemmel bir uygulama oluşturmak için hata işlemenin önemini bilirsiniz. Bir ifadedeki herhangi bir hata, VBA kodunuzu birçok yönden engelleyebilir. Bu nedenle, bir VBA kodunu yürütürken bu hataları işlemek için dikkatli olmalısınız. Excel'de VBA kodunu kullanırken karşılaşabileceğiniz birçok çalışma zamanı hatası vardır. çözmek içinbunlardan biri, biz kullanıyoruz Hatada Sonraki Devam Et Açıklama.

Bu eğitimde, aşağıdakileri kullanmayı öğreneceksiniz Hatada Sonraki Devam Et Bu eğitim, uygun örnekler ve uygun çizimlerle yerinde olacaktır. Bu yüzden bizimle kalın.

Alıştırma Çalışma Kitabını İndirin

Hatada VBA Sonraki.xlsm'ye Devam Et

Excel VBA'da Hata İşleme

Microsoft Excel VBA ile çalışırken, alt prosedürünüzde birçok hatayla karşılaşırsınız. VBA bir deyimi yürütemediğinde, çalışma zamanı hatası verir.

Excel bu hataları otomatik olarak ele alır, böylece bir çalışma zamanı hatası ortaya çıktığında aşağıdaki gibi varsayılan bir hata iletisi görüntüler:

Şimdi, bunları bazı VBA deyimleriyle çeşitli şekillerde ele alabilirsiniz. Bunları daha sonraki bölümlerde tartışacağım.

Daha fazlasını okuyun: Excel'de #REF! Hatası Nasıl Giderilir (6 Çözüm)

VBA'da Hata İfadeleri Üzerine

Çalışma zamanı hatalarını işlemek için Excel'e On Error deyimi ile talimat veririz. Bundan sonra ne tür işlemler yapmak istediğimize hemen karar verir. Temel olarak, bu tür hata işleme ile bu hataları devre dışı bırakırız.

Excel VBA'da üç çeşit On Error deyimi (sözdizimi) kullanırız.

  • Hatada GoTo hat
  • Hatada Sonraki Devam
  • Hatada GoTo 0

Bir hata bulduğunuzda, On Error komutunu kullanın. Hata Üzerine Bildirim, bu çalışma zamanı hataları felaket olacaktır. Bir hata istemi gösterecek ve yürütmeyi durduracaktır.

Kullandığımız zaman Hata Üzerine deyiminde, "etkin" bir hata işleyiciyi açarız. "Etkin" hata işleyici, hata işleme işlemini başlatan etkin bir işleyicidir. Bir hata işleyici dahilken bir hata ortaya çıkarsa, geçerli yöntemin hata işleyicisi hataya dayanamaz. Bundan sonra, kontrol çağıran yordama geri döner.

Çağıran sürecin etkin bir hata işleyicisi varsa, hatayı yönetmek için tetiklenir. Çağıran sisteminizin hata işleyicisi buna uygun olarak meşgulse, kontrol, etkin ancak etkin olmayan bir hata işleyici bulana kadar önceki çağrı prosedürleri aracılığıyla geri verilir. Boşta etkin bir hata işleyici bulamazsa, bu, hatanın meydana geldiği noktada felaket olduğu anlamına gelir.

Hata işleyici, çağıran yordama yetkiyi her geri verdiğinde, bu yordam mevcut yordamı geliştirir. Yürütme, mevcut yordamda, hata işleyici tarafından seçilen anda yeniden başlar. Özgeçmiş deyimi, bir hata işleyicisi herhangi bir yordamdaki hataları işlediğinde kullanılır.

VBA'da 'On Error Resume Next'

Şimdi Hatada Sonraki Devam deyimi, VBA'ya hata içeren kod satırlarını yok saymasını ve hemen bir sonraki kod satırına geçmesini söyler. Bundan sonra, Excel VBA kodları hata içeren satır veya satırları atlayacak ve bir sonraki kod dizisine geçecektir.

Bu Hatada Sonraki Devam deyimi, uygulamanın çalışma zamanı hatasına neden olan kod satırının hemen ardından gelen komutla devam etmesini zorlar. Bu deyim, çalışma zamanı hatası olsa bile uygulamanın atlanmasına izin verir. Belirli bir kod satırının hata üretebileceğini düşünüyorsanız, hata işleme rutinini prosedür içinde başka bir yere koymak yerine oraya yerleştirin. Hatada Sonraki Devam deyimi, kodunuz başka bir yordamı çağırdığında boşta kalır. Bu nedenle, bu yordamda eşleşen bir hata işlemeye ihtiyacınız olduğunda, bir Hatada Sonraki Devam Et komutunu her adlandırılmış kalıpta kullanın.

Atlayabileceğiniz kod satırı makronun başarılı bir şekilde çalışması için gerekli olmadığında makuldür. Ancak unutmayın, istenmeyen sonuçlar sağlayabileceğinden yanlış kullanırsanız zararlı olabilir.

Unutmayın:

On Error Resume Next deyimi çalışma zamanı hatalarını düzeltmez. Temel olarak, VB yürütmenizin çalışma zamanı hatasını oluşturan deyimden devam edeceği hataları yok sayar.

Aşağıdaki koda bir göz atın:

 Sub böl() MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

5'i 0 ve 1 ile bölmeye çalıştık. Kodu çalıştıralım. Aşağıdaki çıktıyı gösterecektir:

Çalışma zamanı hatası üretir. Bir sayıyı 0'a bölemeyiz. Kodda hata ayıkladığınızda aşağıdakileri göreceksiniz:

VB programı bir hata bulduğunda, prosedürü hemen durdurur. Aşağıdaki satırı çalıştırmaz.

Şimdi de Hatada Sonraki Devam Et deyimini hata deyiminden önce kullanın:

 Sub divide() On Error Resume Next MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

Kodu çalıştırdıktan sonra aşağıdakileri göreceksiniz:

Gördüğünüz gibi, VBA hatayı üreten satırı yok sayar ve hemen bir sonraki kod satırına geçer. Hatada Sonraki Devam Et deyimini Excel VBA'da hatayı işlemek için kullanın.

VBA'da 'On Error Resume Next' Örnekleri

İlerleyen bölümlerde size iki örnek sunacağım Hatada Sonraki Devam Et VBA kullanarak Excel çalışma sayfanıza uygulayabileceğiniz ifadeler. Tüm bunları öğrenmenizi ve çalışma kitabınıza uygulamanızı tavsiye ederim. Excel bilginizi kesinlikle artıracaktır.

1. Çalışma Sayfalarını Gizlemek için 'On Error Resume Next' Deyimi

Şimdi, bu örnekte, size etkin çalışma kitabınızın tüm çalışma sayfalarını gizleyecek bir VBA kodu göstereceğim.

Aşağıdaki ekran görüntüsüne bir göz atın:

Burada, dört çalışma sayfamız var. Aşağıdaki VBA kodunu kullanarak hepsini gizleyeceğiz:

 Sub hide_all_sheets() Dim copies As Worksheet For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

Aşağıdaki kodu çalıştırdığınızda, aşağıdaki çalışma zamanı hatasını göreceksiniz:

Excel bu hatayı gösterir çünkü bir çalışma kitabındaki tüm sayfaları gizleyemezsiniz. Bu nedenle, hatayı görmezden gelmeniz gerekir. Bunu yapmak için, kod satırınızda On Error Resume Next deyimini uygulamanız gerekir.

 Sub hide_all_sheets() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

VBA kodunun yürütülmesini tamamladıktan sonra aşağıdaki çıktıyı göreceksiniz:

Sonunda, yürütmeden sonra herhangi bir hata görmeyeceksiniz. Yani, On Error Resume Next deyimimiz VBA kodunda gerçekten iyi çalıştı.

Daha fazlasını okuyun: Excel'deki Hatalar ve Anlamları (15 Farklı Hata)

2. VBA'da 'On Error Resume Next' ile DÜŞEYARA Fonksiyonu

Bu örnekte, bir örnek göstereceğim VBA'da VLOOKUP işlevi Şimdi, bu VBA kodu ayrıca Hatada Sonraki Devam Et Açıklama.

Aşağıdaki ekran görüntüsüne bir göz atın:

Burada bazı kişilerin isimlerini ve yaşlarını görebilirsiniz. Yandaki tabloda ise VLOOKUP kişinin adını ve yaşını bulmak için.

Bunu yapmak için aşağıdaki kodu yazın:

 Sub VLOOKUP_Function() Dim i As Long For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

Şimdi makroyu çalıştırın. Aşağıdaki hatayı göreceksiniz:

Şimdi, bu bir çalışma zamanı hatasıdır. Neden oluyor? Veri kümesine tekrar bir göz atın:

Gördüğünüz gibi, "Aaron" ve "Emma" için veri yok. Bu yüzden sadece VLOOKUP Bundan sonra, yürütmeyi durdurur. Şimdi, hatayı görmezden gelmek ve çağların geri kalanını bulmaya devam etmek istiyorsanız Hatada Sonraki Devam Et Açıklama.

 Sub VLOOKUP_Function() Dim i As Long On Error Resume Next For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

VBA kodunu çalıştırdıktan sonra aşağıdaki çıktıyı göreceksiniz:

Gördüğünüz gibi, uygulayarak Hatada Sonraki Devam Et komutunu kullandığımızda, hatayı yok saydık ve kişilerin yaşlarının geri kalanını bulduk. VBA kodumuz Aaron ve Emma'ya ait herhangi bir veri bulamadı. Bu nedenle bu değerleri yok saydı ve Excel çalışma sayfasındaki değerlerin geri kalanını döndürdü.

Daha Fazla Oku: [Düzeltildi] Excel Bu Çalışma Sayfasındaki Bir veya Daha Fazla Formül Başvurusunda Sorun Buldu

Excel VBA ile 'Hatada Sonrakine Devam Et' özelliğini kapatın

Şimdi, VBA kodunun belirli bir bölümü için hataları yok saymak istediğiniz bir durumda olabilirsiniz. Unutmayın, bir VBA kodunda On Error Resume Next deyimini kullanırsanız, bundan sonraki tüm hataları atlayacaktır. Şimdi, bunu kapatmak ve başka bir bölüm için hata işlemeyi etkinleştirmek istiyorsanız, şunu kullanın Hatada GoTo 0 Hata işlemeyi tekrar etkinleştirecektir.

Genel kullanım:

Sub error_handling()

Hataları yok saymak için

Hatada Sonraki Devam Et

// kod satırları

Hata işlemeyi açmak için

Hatada GoTo 0

//kod satırları

End sub

Aşağıdaki VBA koduna bir göz atın:

 Sub error_handling() Dim i As Long 'hatayı yok saymak için Hatada Devam Sonraki For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Sonraki i 'hatada kapatmak için devam sonraki On Error GoTo 0 MsgBox i / 0 End Sub 

Daha önce şu kodu kullanmıştık VLOOKUP Burada size göstermek için fazladan bir kod parçası ekledik. Kodumuz, aşağıdaki işlemleri gerçekleştirirken hataları göz ardı edecektir VLOOKUP ancak hata işlemeyi Hatada GoTo 0 Açıklama.

Daha fazlasını okuyun: Excel VBA: "Hatada Sonraki Devam Et" Özelliğini Kapatın

VBA 'On Error GoTo'

Daha önce On Error yöntemini kullanarak hataları ele almayı tartışmıştım. Tüm makalemiz Hatada Sonraki İşleme Devam Et. Şimdi, ilerleyen bölümlerde tartışacağım iki tür hata işleme de vardır.

1. VBA Hata Üzerine GoTo 0

Bu Hatada Goto 0 deyimi, kodlarınızda bir hata işleyicisi yoksa Excel'in dahili ayarıdır. Temel olarak, VBA ile bir hata bulduğunda Hatada GoTo 0 kodu çalıştırmayı durduracak ve geleneksel hata mesajı kutusunu gösterecektir.

Hatada GoTo 0 deyimi temel olarak mevcut yordamdaki hata işlemeyi kapatır. 0 numaralı satırı, yöntem 0 numaralı bir satır içerse bile, hata işleme kodunun başlangıcı olarak tanımlamaz.

Aşağıdaki koda bir göz atın:

 Sub on_error_goto_0() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo 0 ActiveSheet.Name = "Copy-4" End Sub 

Bu kodu size daha önce göstermiştik. Bu kod temel olarak mevcut çalışma kitabınızdaki tüm çalışma sayfalarını gizler. Şimdi, gerçekten de fazladan bir kod parçam var Hatada GoTo 0 Eğer kodu çalıştırırsanız, aşağıdakileri göreceksiniz:

Etkin çalışma kitabında aynı ada sahip sayfalarımız olamayacağı için bu hatayı gösteriyor.

2. VBA Hata Üzerine Git satırı

Şimdi, Excel'e herhangi bir hata bulursa başka bir kod parçasını çalıştırması talimatını da verebilirsiniz. Hatada GoTo satırı Excel'e bir hata bulduktan sonra bir şey çalıştırmasını söyler.

Satır bağımsız değişkeni herhangi bir satır etiketi veya satır numarasıdır. Kodumuz herhangi bir çalışma zamanı hatasına neden olursa, satıra geçerek hata işleyicinin yürütmede etkin olmasına neden olur. Tanımladığınız satırın On Error deyimiyle aynı yordamda olması gerektiğini unutmayın; aksi takdirde derleme hatasına neden olur.

Aşağıdaki koda bir göz atın:

 Sub on_error_goto_line() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo error_handler ActiveSheet.Name = "Copy-4" Exit Sub error_handler: MsgBox "Aynı isimde bir sayfa da var. Farklı bir tane deneyin." End Sub 

Bir önceki örnekte kodu gördünüz. Hatada GoTo 0 bir hataya neden oldu. Ancak, burada bunu Hatada GoTo satırı Açıklama.

Şimdi kodu çalıştırın ve aşağıdakileri göreceksiniz:

Gördüğünüz gibi, bize standart hata iletişim kutusunu göstermiyor. Bunun yerine, aşağıda oluşturduğumuz özel mesaj kutusunu gösteriyor error_handler bölümüne atlar. Excel herhangi bir hata bulduğunda error_handler segmentini ve bize mesaj kutusunu gösterir.

Biz ayrıca bir Çıkış Alt Prosedürde " VLOOKUP ", VBA kodumuz aktif sayfayı yeniden adlandıracaktır. Daha sonra, hata işleyicisine devam etmemize ve mesaj kutusunu görüntülememize gerek olmadığı için yürütmeyi burada bitirmeliyiz.

Excel'de VBA 'Hata Üzerine' Çalışmıyor

Bazen, ne kadar uğraşırsanız uğraşın, On Error yöntemi çalışmaz. Hata Üzerine yöntemini kullansanız bile bazen hataları gösterecektir. Hatada Sonraki Devam Et veya Hatada GoTo 0 Kodunuzda düzeltmeniz gereken çeşitli nedenler olabilir. Size bunu göstermeyeceğim.

VBA'nın temel nedeni ' Hata Üzerine' Excel'de Çalışmıyor, Excel'de "Tüm Hatalarda Ara Ver" seçeneğini açıyor.

Bunu çözmek için aşağıdaki adımları izleyin:

📌 Adımlar

  • İlk olarak, tuşuna basın Alt+F11 VBA düzenleyicisini açmak için klavyenizdeki tuşuna basın.
  • Şimdi, üzerine tıklayın Araçlar> Seçenekler.

  • Bundan sonra, aşağıdaki Genel sekmesinde Seçenekler iletişim kutusu.

  • Burada görebilirsiniz, " Tüm Hatalarda Ara " zaten kontrol edilmiştir. Temel olarak hataları işlemenizi engeller.
  • Değiştirmek için " İşlenmemiş Hatalarda Ara Verme " üzerine tıklayın ve TAMAM. .

Umarım Excel'de çalışmayan VBA "Hata Üzerine" sorununuzu çözer.

Daha fazlasını okuyun: Excel'de NAME Hatasının Nedenleri ve Düzeltilmesi (10 Örnek)

💬 Unutulmaması Gerekenler

✎ Hatada Sonraki Devam hataları düzeltmez. Temel olarak hatayı yok sayar ve bir sonraki ifadeye geçer.

Excel, çalışma zamanı hatalarını Err nesnesinde yakalar ve saklar. Hatada Sonraki Devam Et deyiminde Err nesnesinin özelliklerini temizler.

Kapatabilirsiniz Hatada Sonraki Devam Et ifadesini ekleyerek Excel'deki VBA kodunuzda Hatada GoTo 0 Açıklama.

Sonuç

Sonuç olarak, umarım bu eğitim size bir parça yararlı bilgi sağlamıştır. Hatada Sonraki Devam Et Tüm bu talimatları öğrenmenizi ve veri kümenize uygulamanızı tavsiye ederim. Alıştırma çalışma kitabını indirin ve bunları kendiniz deneyin. Ayrıca, yorum bölümünde geri bildirimde bulunmaktan çekinmeyin. Değerli geri bildirimleriniz, bu gibi eğitimler oluşturmak için bizi motive ediyor.

Web sitemizi kontrol etmeyi unutmayın Exceldemy.com Excel ile ilgili çeşitli sorunlar ve çözümler için.

Yeni yöntemler öğrenmeye ve büyümeye devam edin!

Hugh West, sektörde 10 yılı aşkın deneyime sahip oldukça deneyimli bir Excel eğitmeni ve analistidir. Muhasebe ve Finans alanında lisans derecesine ve İşletme alanında yüksek lisans derecesine sahiptir. Hugh öğretme tutkusuna sahiptir ve takip etmesi ve anlaması kolay benzersiz bir öğretim yaklaşımı geliştirmiştir. Excel konusundaki uzman bilgisi, dünya çapında binlerce öğrencinin ve profesyonelin becerilerini geliştirmesine ve kariyerlerinde başarılı olmasına yardımcı olmuştur. Hugh, blogu aracılığıyla bilgisini dünyayla paylaşıyor, bireylerin ve işletmelerin tam potansiyellerine ulaşmalarına yardımcı olmak için ücretsiz Excel eğitimleri ve çevrimiçi eğitimler sunuyor.