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 çeşit mantıksal test uygulamamız gerekir.

Bunu basit terimlerle inşa edelim.

 Sub MacroName () '...' Bazı kodlar burada '... Exit Sub' Aşağıdaki kod satırlarını çalıştırmadan Sub'dan çık '...' Bu kod yok sayılacak '... End Sub 

Örnekler

Bu VBA Exit Sub Excel Şablonunu buradan indirebilirsiniz - VBA Exit Sub Excel Template

Ö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 alttan çıkmak istiyorum.

Bunun için 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'dir, 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ürden doğrudan çıkacaktır.

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. Dolayısıyla, 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 çı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ında görebiliyorsanız, etiketten şu şekilde bahsetmiştim:

ErrorHandler: Sub'dan Çık 

Bu nedenle, kod bir hatayla karşılaştığında, kodu etikete atlamak için zorlayacak ve etiket "Exit Sub" ifadesine sahip olacak, bu nedenle alt prosedürden çıkacaktır.

Şimdi kodu çalıştıracağım, hata bulana kadar bölümü hesaplayacak.

C7 hücresinde görebileceğiniz gibi, "Sıfıra Bölme" olarak bir hatayla karşılaştı ve 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. Kodu çalıştırı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.