VBA Çıkış Alt - Koşullar Karşılanmazsa VBA Alt Prosedüründen Çıkın

Excel VBA Çıkışı Alt Prosedürü

Exit Sub deyimi, tanımlanmış VBA kodları satırlarından önce alt prosedürden çıkar. Bununla birlikte, alt prosedürden çıkmak için bir tür mantıksal test uygulamamız gerekir.

Bunu basit terimlerle inşa edelim.

Alt MakroAdı () '…' Bazı kodlar burada '… Sub'dan Çık' Altta daha fazla kod satırı çalıştırmadan Sub'dan çık '…' Bu kod yok sayılacak '… End Sub

Örnekler

Örnek 1

Daha iyi bir örnek için aşağıdaki koda bakın.

Kod:

Sub Exit_Example1 () Dim k As Long For k = 1 ila 10 Hücre (k, 1) .Değer = k Sonraki k End Sub

Yukarıdaki kod, A1 ile A10 arasındaki hücrelerde 1'den 10'a kadar seri numaraları ekleyecektir.

Şimdi sadece 5 seri numarası eklemek istiyorum ve "k" değişkeninin değeri 6 olur olmaz, alt bölümden çıkmak istiyorum.

Excel'de mantıksal testi IF k = 6 olarak eklemem gerekecek . Sonra Sub'dan Çık .

Kod:

Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'k değeri 6 olur olmaz tüm kodları yok sayacak ve Hücrelerden (k, 1) çıkacaktır. Değer = k Sonraki k End Alt

Şimdi kodu satır satır çalıştırın. İşlemleri başlatmak için F8 tuşuna basın.

Şu an itibariyle k değeri sıfırdır.

K değerini 1 olarak değiştirmek için F8 tuşuna bir kez daha basın.

Yani k değeri 1, kodumuz çalışmaya devam eder ve A1 hücresine 1 ekler. Bunun gibi, k değeri 6 olana kadar döngüyü çalıştırmaya devam edin.

Şimdi k'nin değeri 6'dır ve kod satırı, alt prosedürden çıkmak için mantıksal testimizi yürütmek üzere. F8 tuşuna bir kez daha basarsam, yalnızca tüm alt prosedüre geçecektir.

Gördüğümüz gibi, "Exit Sub" kelimesini vurguladı . F8 tuşuna basıldığında, "End Sub" kelimesine gitmeden alt prosedürden çıkacaktır .

Örnek 2 - Hata Olduğunda Alt Prosedürden Çık

Hata değerlerini aldığımızda da alt prosedürden çıkabiliriz. Örneğin, sayı1'i sayı 2'den ayıran aşağıdaki verileri düşünün.

İki sayının bölünmesini elde etmek için kod aşağıdadır.

Kod:

Sub Exit_Example2 () Dim k As Long For k = 2 ila 9 Hücre (k, 3) .Değer = Hücreler (k, 1) .Değer / Hücreler (k, 2) .Değer Sonraki k End Sub

Bildiğimiz gibi herhangi bir sayıyı sıfıra bölemeyiz. Yani bunu yapmaya çalışırsak, Çalıştırma Süresi Hatası '11': Sıfıra Göre Bölme olarak hatayı alacağız.

Bunu önlemek için, herhangi bir hatayla karşılaştığımız anda, alt prosedürden hemen etkili şekilde çıkmak için makromdan bahsedeceğim. Aşağıdaki kod böyle bir durumdur.

Kod:

Sub Exit_Example2 () Dim k As Long For k = 2 To 9 GoTo ErrorHandler Cells (k, 3) .Değer = Hücreler (k, 1) .Değer / Hücreler (k, 2) .Değer Sonraki k HataHandler: Sub Çık Sub

Yukarıdaki örnekte, "On Error Goto ErrorHandler" ifadesinden bahsetmiştim. Burada ErrorHandler kelimesi atadığım etikettir. Kodun alt kısmında görebiliyorsanız markadan şu şekilde bahsetmiştim:

ErrorHandler: Sub'dan Çık

Kod bir hatayla karşılaştığında, etikete atlamak için kodu itecektir ve marka, alt prosedürden çıkmak için "Exit Sub" ifadesine sahip olacaktır.

Şimdi kodu çalıştıracağım; bir hata bulana kadar bölümü hesaplayacaktır.

C7 hücresinde görebileceğiniz gibi, "Sıfıra Böl" olarak bir hatayla karşılaştı, bu nedenle alt prosedürden çıktı. Kullanıcıya haber vermeden alt prosedürden çıkmak her zaman tehlikeli bir şeydir. Kullanıcıyı hatadan haberdar etmek için küçük bir mesaj kutusu ekleyebiliriz.

Kod:

Sub Exit_Example2 () Dim k As Long For k = 2 To 9 GoTo ErrorHandler Cells (k, 3) .Değer = Hücreler (k, 1) .Değer / Hücreler (k, 2) .Value Next k ErrorHandler: MsgBox " Hata Oluştu ve hata: "& vbNewLine & Err.Description Exit Sub End Sub

Yukarıdaki kod, hata mesajını gösterecek ve ardından alt prosedürden çıkacaktır. Kod çalıştırılırken bir hata oluşursa aşağıdaki gibi VBA'da mesaj kutusu gösterecektir.

Bu, Alt Prosedürden çıkmanın daha güvenilir bir yoludur.

Ilginç makaleler...