VBA Hatasında Devam Ediyor Sonraki veya Goto 0

Bu eğitim, VBA On Error Resume Next ve Goto Statement'ı açıklayacaktır.

Kodunuz mükemmel bir şekilde oluşturulduğunda bile, kullanıcı beklediğiniz gibi yapmayabilir. Bu nedenle, bir hatanın meydana gelebileceği bir neden olduğunda, kodunuza Hata işleyicileri eklemeniz gerekir.

Hatada Devam Et Sonraki

On Error Resume Next deyimi, VBA'ya hata içeren herhangi bir kod satırını atlamasını ve bir sonraki satıra geçmesini söyler. VBA, içinde hata bulunan satırı veya satırları yok sayar ve sonraki kod satırına geçer.

Bu, yoksayılabilecek kod satırı makronun başarılı çalışması için kritik olmadığında yararlıdır, ancak yanlış kullanıldığında istenmeyen sonuçlar verebileceğinden oldukça tehlikeli olabilir.

Örneğin, aşağıdaki prosedürde:

123456 Alt HideAllSheets()Dim ws As Çalışma SayfasıActiveWorkbook.Sheets'deki Her ws içinws.Visible = YanlışSonrakiAlt Bitiş

Bu kodu çalıştırırsak, bir çalışma kitabındaki tüm çalışma sayfalarını gizleyemediğimiz için bir hata alırız - en az bir çalışma kitabının görünür kalması gerekir.

Ancak, prosedürü aşağıda gösterildiği gibi değiştirirsek, kod hatayı geçmeye devam edecek ve çalışma kitabındaki son sayfayı görünür halde bırakacaktır.

1234567 Alt HideAllSheets()Hatada Devam Et SonrakiDim ws As Çalışma SayfasıActiveWorkbook.Sheets'deki Her ws içinws.Visible = YanlışSonrakiAlt Bitiş

Hatada GoTo 0

Kodumuzda hata işleyici yoksa, Hatada 0 Git Excel'in varsayılan ayarıdır. Bu temelde şu anlama gelir: bir hata oluştuğunda Hatada GoTo 0, VBA, kod yürütmeyi durduracak ve standart hata mesajı kutusunu görüntüleyecektir, örneğin:

gibi bir hata tuzağı koyduysak Hatada Devam Et Sonraki kodumuzda, ancak hatayı varsayılana yeniden ayarlamak istiyoruz, bir Hatada 0 Git kodumuzun içine girin.

12345678910 Alt ErrorGoTo0()Hatada Devam Et SonrakiDim ws As Çalışma SayfasıActiveWorkbook.Sheets'deki Her ws içinws.Visible = YanlışSonrakiHatada GoTo 0'Burada Daha Fazla Kod çalıştırın, örneğin:ActiveSheet.Name = "Sayfa1"Alt Bitiş

Şimdi eğer kodumuzda herhangi bir hata olacaksa Hatada 0 Git hat, Excel için varsayılan hata mesajı ortaya çıkar. Bu örnekte, ActiveWorkbook'ta, yukarıdaki kod olarak Sayfa1 adında bir sayfamız zaten var. Hatada 0 Git sayfayı gizler, ancak silmez. Sayfa adının zaten alındığını belirten varsayılan Excel hata mesajı gösterilecektir.

Hatada Git Hat

Ayrıca kodumuzu kullanarak farklı bir kod satırına geçmeye zorlayabiliriz. Hata Üzerine Git Hat bu, bir hata oluşursa VBA'ya belirli bir kod satırına gitmesini söyler.

123456789101112 Alt ErrorGoToLine()Hatada Devam Et SonrakiDim ws As Çalışma SayfasıActiveWorkbook.Sheets'deki Her ws içinws.Visible = YanlışSonrakiHatada GoTo errhandlerActiveSheet.Name = "Sayfa1"Alt Çıkıştemizlikçi:MsgBox("sheet1 adında bir sayfa zaten var!", vbCritical)Alt Bitiş

Yukarıdaki örnekte, kod “Sayfa1” sayfasını bulduğunda, hata işleyici etiketinin altındaki kod satırına geçer - bu durumda, kullanıcılara sayfanın zaten çıktığını bildiren özel bir mesaj kutusu çağırır. Hata işleyici etiketinin, VBA'ya bunun bir etiket olduğunu göstermesi için iki nokta üst üste olması gerekir.

1 temizlikçi:

Kod daha sonra etiketin altındaki satıra atlayacak ve özel mesaj kutusuna dönecektir.

Bu, standart Excel mesajı her zaman kodda Hata Ayıklama seçeneği sunduğundan, kullanıcınızın Hata Ayıkla'yı tıklatarak kodunuza girmesini istemediğinizde kullanışlıdır.

Ayrıca bir ihtiyacımız var Alt Çıkış prosedürde. Varsa OLUMSUZ Sayfa1 adlı bir sayfa, ardından bu kod satırı çalışır ve etkin sayfayı Sayfa1 olarak yeniden adlandırır. Daha sonra kodun bitmesini istiyoruz - hata işleyicisine devam etmesini ve mesaj kutusunu göstermesini istemiyoruz. Exit Sub satırı daha sonra prosedürden çıkar ve kodu durdurur.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave