Hata İfadelerinde VBA - Hataları İşlemenin En İyi 3 Yolu

Hata Bildiriminde Excel VBA

VBA On Error deyimi, koda herhangi bir tür hatayla karşılaştığında, genellikle bir kod bir hatayla karşılaştığında, yürütmeyi durdurur ancak koddaki bu ifadeyle, kod, bir hatayla karşılaştığında yapacak bir dizi talimata sahip olduğu için devam eder.

Koddaki hatayı tahmin etmek sizi VBA kodlamada profesyonel yapar. Kodu% 100 verimli hale getiremezsiniz. Kodunuzdan şu veya bu şekilde emin olsanız bile, bir hata oluşturabilir.

Her tür hatayı tanımlamak ve ele almak neredeyse imkansız bir görevdir, ancak VBA'da bir hatayı ele almak için farklı yollarımız var. Kodu yazarken, hata kodunun ne tür bir hata kodunun ortaya çıkacağını tahmin edemeyebilirsiniz, ancak herhangi bir hata gelirse, kodun kendisini yazmaktan daha fazla hata ayıklamaya zaman harcarsınız.

Hata nedir?

Hata, işlevsellik veya yanlış kod nedeniyle bir satır kod çalıştırılamaz. Bu yüzden hatayı tahmin etmeye ve halletmeye çalışın.

Örneğin, orada olmayan sayfayı silmeye çalışırsanız, o zaman açıkça bu kod satırını çalıştıramayız.

Bir hata, bildirilmemiş değişkenler nedeniyle üç türden derlenmiş bir hatadır. İkincisi, kodlayıcı tarafından yanlış girişlerden kaynaklanan veri girişi hatası ve üçüncüsü, VBA'nın kod satırını tanıyamaması nedeniyle çalışma zamanı hatasıdır. Orada olmayan bir çalışma sayfasına veya çalışma kitabına erişmeye veya üzerinde çalışmaya çalışmak için.

Ancak VBA'da tüm bu tür hataların üstesinden gelmek için bir bildirimimiz var, yani "Hata Durumunda" ifadesi.

Hata İfadelerinin Türleri

VBA'daki hataları işlemenin kilit noktası "Hata Durumunda" ifadesidir. Örneğin, Hata Olduğunda, "sonraki satıra devam et", "başka bir satıra git veya başka bir satıra atla" vb. …

On Error ifadesinin üç tür ifadesi vardır.

  1. GoTo 0 , çalışma zamanı hatası oluştuğunda, excel veya VBA'nın karşılaştığı hata türünü belirten hata mesajı kutusunu görüntülemesi gerektiği anlamına gelir. VBA kodu yürütür çalıştırmaz, koddaki o belirli bloktaki tüm hata işleyicileri devre dışı bırakır.
  2. Resume Next , hata oluştuğunda, bu ifade excel'e bu hatayı yok saymasını ve herhangi bir hata mesajı görüntülemeden bir sonraki kod satırına geçmesini (sonraki devam et) söyler. Hatayı düzelteceği anlamına gelmez; daha ziyade, hatayı yok sayar.
  3. GoTo (etiket) , VBA bir hatayla karşılaştığında, atanan etikete git anlamına gelir. Bu, kodun kodlayıcı tarafından sağlanan belirli bir satıra atlamasını sağlar.

VBA'da Hataları İşlemenin En İyi 3 Yolu

# 1 - Hata Devam Etme Sırasında

20 değerini 0'a böldüğünüzü ve bölme sonucunu ona atamak için değişkeni tanımladığınızı varsayalım.

Kod:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Bu kodu çalıştırırsanız aşağıdaki hatayı atacaktır.

Yani herhangi bir sayıyı sıfır değerine bölemezsiniz. Çalışma zamanı hata numarası 11'dir, yani Sıfıra Böl.

Şimdi koda bir satır daha ekleyeceğim.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 End Sub

Şimdi en üstteki On error resume ifadesini ekleyeceğim.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Şimdi, bu kodu çalıştırırsam, bana herhangi bir hata mesajı vermez; bunun yerine, sonraki kod satırını çalıştıracaktır, yani j = 20/2.

# 2 - GoTo Etiketinde Hata Oluştu

Üç değişken tanımladım.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

Tüm bu üç değişken için bir bölme hesaplaması yapacağım.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Tüm bu üç hesaplamanın sonucu mesaj kutusunda gösterilecektir.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "i'nin değeri" & i & vbNewLine & "j'nin değeri "& j & _ vbNewLine &" k'nin değeri "& k & vbNewLine End Sub

Şimdi “I” hesaplaması uygun olmadığı için bu kodu çalıştırmaya çalışacağım. Çalışma zamanı hatası 11 alacağız.

Şimdi "Hatada Devam Et" ifadesini ekleyeceğim.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "i'nin değeri" & i & vbNewLine & " j'nin değeri "& j & _ vbNewLine &" k değeridir "& k & vbNewLine End Sub

Bunu yürütürsem, "I" hesaplamasını atlayacak ve kalan iki hesaplamayı gerçekleştirecek ve sonuç aşağıdaki gibi olacak.

Şimdi "Hata Durumunda Devam Ettirme" yerine "Hata Olduğunda KK Hesaplaması" ekleyeceğim.

Kod:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCHesaplama: i = 20/0 j = 20/2 KHesaplama: k = 10/5 MsgBox "i'nin değeri" & i & vbNewLine & "J'nin değeri" & j & _ vbNewLine & "k'nin değeri" & k & vbNewLine End Sub
Not: Burada, "KK hesaplaması" verdiğim etiket adıdır; boşluk bırakmadan kendi etiket adınızı verebilirsiniz.

Şimdi, eğer bu kod satırını çalıştırırsam, sonraki satıra atlamaz. Bunun yerine, girdiğim etiket adına atlayacak, yani "KHesaplama". Burada "I" tarafından verilen hatayı yok sayacak ve ayrıca "j" hesaplamasını gerçekleştirmeyecek, ancak hemen "KH hesaplamasına" atlayacaktır.

# 3 - VBA'da Hata Numarasını Yazdır

Kodun sonunda hata numarasını ayrı bir mesaj kutusuna da yazdırabiliriz. Aşağıdaki kod satırı bu işi yapacak.

Kod:

Hata numarası

Şimdi bu kodu çalıştıracağım ilk mesaj kutusu hesaplama sonuçlarını gösterecek.

Tamam'a tıklayın. Hata numarasını göstermek için bir mesaj kutusu daha gösterecektir.

11'e gidiyoruz; sonuç olarak, yani Sıfıra Bölme.

Numara yerine hata açıklamasını da alabiliriz. Sadece kodu değiştirmemiz gerekiyor. Kod aşağıdadır.

Kod:

Hata açıklaması

Böyle bir açıklama gösterecek.

Hatırlanacak şeyler

  • Kodun sonuna "On Error Resume Next" yazdıktan sonra, "On Error GoTo 0" ifadesini eklemeyi unutmayın.
  • Etiket adı her iki yerde de aynı olmalıdır.
  • Etiket adlarının önceden iyi tanımlanması gerekmez.
  • Sonunda, her zaman ayrı mesaj kutusu aracılığıyla hatanın ne olduğunu görün.

Ilginç makaleler...