Excel VBA'da (Uygulamalar için Visual Basic), Exit Sub ifadesi, bir prosedür (alt rutin) içinde alt rutinden hemen çıkmak ve kontrolü çağıran koda geri döndürmek için kullanılır. Bu ifade genellikle belirli bir koşul karşılandığında ve alt rutinin sonuna ulaşmadan yürütülmesini sonlandırmak istediğinizde kullanılır.
Aşağıdaki örneği ele alalım:

20 sayıyı çalıştıracak bir FOR döngüsü başlatmak için bir alt rutin oluşturun. Burada, döngü numarası 15'e ulaşana kadar kontrol edin. Sonra, Immediate Sekmesinde “Goal Reached” yazdırın ve VBA Exit Sub'ı erken gerçekleştirin. Döngüden çıkmanızı ve alt rutinin geri kalanını yürütmemenizi sağlar.

Burada döngü 1'den 15'e kadar çalışır. 15'e ulaşıldığında, VBA'daki Print fonksiyonu çalıştırılır ve i = 15 koşulu sağlandığında VBA Exit Sub koşulu sağlanır.
ÖNEMLİ NOKTALAR
- Exit Sub, Visual Basic for Applications'da (VBA) bir Alt prosedürden (alt yordam) erken çıkmak için kullanılır.
- Bir Alt prosedürünün içine yerleştirildiğinde, denetimi hemen Alt çağrısını takip eden ifadeye aktarır. Genellikle belirli bir koşul karşılandığında ve Alt'ın daha fazla yürütülmesine gerek olmadığında kullanılır.
- Çıkış, Exit Sub'ın kullanıldığı belirli Sub prosedürüyle sınırlıdır. Kodun diğer bölümlerini etkilemez.
- Daha dinamik ve duyarlı kod oluşturmak için sıklıkla koşullu ifadelerle (örneğin, VBA Exit Sub If…Then) birlikte kullanılır.
Excel VBA Çıkış Alt Prosedürü nasıl kullanılır?
Altyordam'da VBA Exit Sub Early'nin nasıl kullanılacağına dair bir örnek görmek için aşağıdaki Örneği inceleyin.
Adım 1: Excel Çalışma Kitabını açtıktan sonra Excel araç çubuğunda “Geliştirici” sekmesine tıklayın.

“ Geliştirici ” sekmesinde , sol köşedeki “ Visual Basic ” seçeneğini seçin . VBA Düzenleyicisi açılır.

Editör araç çubuğunda “Ekle”yi seçin, ardından açılır menüden “Modül”ü seçin. Kod yazabileceğiniz yeni bir boş sekme açılacaktır.

Şimdi VBA Exit Sub Procedure'ın nasıl kullanılacağını öğrenmek için adımları takip edebilirsiniz.
Adım 2: Yuvarlatılmış değişkenleri kontrol etmek istediğiniz alt rutini adlandırarak başlayın.

Adım 3: Excel VBA'da Decimal değerlerini tutmak için bir VBA Double değişkeni başlatın.

Adım 4: Excel'de halihazırda mevcut olan Pi'nin VBA'daki Çalışma Sayfası Fonksiyonunu kullanarak double değişkenine pi değerini verin .

Adım 5: Pi değerini 3 ondalık basamağa yuvarlayın ve yuvarlanan değerin 3.142'ye eşit olup olmadığını kontrol edin.

Bunun için bir If koşulu başlatın ve VBA Çalışma Sayfası RoundUp fonksiyonunu pi değişkeni ve yuvarlanması gereken basamak sayısı ile kullanın.
VBA'daki Yuvarla işlevi bir sonraki en yüksek değeri seçer. Bu nedenle, 3.14159 değeri 3.142'ye yuvarlanacaktır.
Adım 6: Doğruysa Pi değerini yazdırın. Ardından alt rutinden çıkın. Else koşulunu kontrol etmeye gerek yok.

Adım 7: Else koşulu için, “Yanlış Numara” olduğunu belirten bir Mesaj Kutusu yazdırın.

Adım 8: Değeri kendisine ekleyin ve pi+pi toplamını pi değişkeninin kendisinde saklayın.

Bu toplam değerini yazdırın ve alt rutinden çıkın. Sonra, If-Else VBA ifadesi bloğunu sonlandırın.

Kod:
Sub roundFunc()
Dim pi As Double
pi = Application.WorksheetFunction.pi
If Application.WorksheetFunction.RoundUp(pi, 3) = 3.142 Then
MsgBox pi
Exit Sub
Else
MsgBox “Wrong Number”
pi = pi + pi
MsgBox pi
Exit Sub
End If
End Sub
Adım 9: Yukarıdaki alt rutini çalıştırmak için Excel VBA Editöründeki araç çubuğundaki “F5” veya “Çalıştır” simgesine tıklayın. Bu, doğru şekilde yuvarlanmışsa pi değerini yazdırır. Aksi takdirde, pi değerinin iki katını yazdırır.

VBA Exit alt if True yürütüldüğünden, Else kısmı kontrol edilmez veya yürütülmez. Bununla birlikte, çıktı görüntülendiği gibidir.
Örnekler
VBA Exit Sub'ın Hata İşleme ve koşulları kontrol etme amacıyla farklı şekillerde nasıl kullanılabileceğini görün.
Örnek 1
Bu örnekte, kişinin yetişkin (21 yaş ve üzeri) olup olmadığını kontrol etmek için bir sistem oluşturmanız gerekir. Bu, bir If-Else ifadesi kullanılarak yapılabilir ve koşul False ise, alt rutinden çıkmalıyız. Ayrıca, geçersiz bir girdi verildiğinde alt rutinden çıkmanız gerekir.
Adım 1: Bir kişinin yetişkin olup olmadığını kontrol etmek için alt rutini adlandırmakla başlayın.

Adım 2: VBA InputBox fonksiyonunu kullanarak kullanıcıdan kişinin yaşını alın ve özel değerler elde edin.

Adım 3: VBA IsNumeric fonksiyonunu kullanarak girdinin bir sayı olup olmadığını kontrol edin.

Adım 4: Eğer girdi bir rakamsa, girdi rakamının 21'den küçük olup olmadığını kontrol eden iç içe geçmiş bir If ifadesiyle devam edin.

Adım 5: Verilen sayı 21'den küçükse, kişinin "Yetişkin değil" olduğunu belirten bir mesaj yazdırın ve ardından alt rutinden çıkın.

- vbExclamation, ileti kutusuna simgeler yerleştirmek için kullanılan bir sabittir. Bu, ileti kutusuna sarı bir üçgen içinde bir ünlem işareti yazdırır.
Adım 6: Else ifadesinde, girdi 21'den büyük veya eşitse, vbInformation sabitiyle birlikte yaşı yazdıran başka bir Mesaj Kutusu işlevini başlatın. Ardından, If-Else ifadesi bloğunu sonlandırın.

VbInformation, VBA'da Mesaj Kutusuna bir simge yazdırabileceğiniz mesaj kutusundaki bir anahtar kelimedir .
Neresi
- vb – Visual Basic
- Bilgi – İkon adı.
Adım 7: Verilen girdinin bir sayı değil de başka bir veri tipi olması durumunda, o senaryo için Else bloğunu yazın.

Else bloğunda, mesaj kutusuyla birlikte mesajı yazdırın, “Geçersiz Giriş” ve sonra alt rutinden çıkın. Sonra If ifadesini sonlandırın.
Kod:
Sub exit_example()
Dim age As Integer
age = InputBox(“Yaşınızı giriniz:”, “Yetişkin veya değil”)
If IsNumeric(age) Then
If age < 21 Then
MsgBox “Yetişkin değil”, vbExclamation
Exit Sub
Else
MsgBox “Yetişkinsin ” & age, vbInformation
End If
Else
MsgBox “Geçersiz giriş”
Exit Sub
End If
End Sub
Adım 8: Excel Çalışma Sayfasındaki makroları çalıştırarak kodu çalıştırın . Excel Çalışma Kitabındaki mevcut Makrolar açılacaktır.


Adım 9: Çalıştırmanız gereken alt rutini seçin. Ardından “Çalıştır”a tıklayın. Alternatif olarak, çalıştırmak için makro alt rutinine çift tıklayabilirsiniz. Sonuç gösterildiği gibidir.


Mesaj kutusuna gömülü vbInformation ikonudur.
21 yaşından küçük bir yaş yazarsanız şunu elde edersiniz:


Mesaj kutusuna gömülü vbExclamation simgesidir. Geçersiz bir çıktı yazarsanız.


Örnek 2
Bu örnekte, VBA Exit Sub on Error'ı kullanmayı öğreneceksiniz. Hatalar, tür uyumsuzluğundan 0'a Bölmeye kadar değişebilir. Bu hatalar, bir sistemdeki diğer işlemleri durdurabilir. Bu nedenle, bu durumu aşmak için VBA Exit Sub on Error'ı kullanabilirsiniz. Bunu nasıl yapacağınıza dair süreç aşağıda görülebilir.
Adım 1: Bir alt rutinde oluşan hataları ele almak için bir alt rutin tanımlayarak başlayın .

Adım 2: Bir tamsayı değişkeni tanımlayın ve ona bir değer verin. Burada, 5 olarak tanımlanmıştır.

Adım 3: Tekrarlayan bir değişken başlatın ve ardından hata işleme gerçekleştirin. Bir hata oluşması durumunda, hata işleme satırı yürütülür ve Errorhandler bölümünü yürütür.

Adım 4: 1'den 6'ya kadar bir FOR döngüsü başlatın.

Adım 5: Yinelemeli değişkeni 1. adımda tanımlanan tamsayı değişkenine bölün. Ardından, bölüm değerini Immediate sekmesinde yazdırın. Bundan sonra, tamsayı değişkenini bir azaltın ve FOR döngüsüne devam edin.


Bu şekilde yinelemeler arttıkça tam sayı değişkeni 0'a düşerek 0'a bölme hatası oluşmaktadır.
Adım 6: FOR döngüsünden sonra kodun Errorhandler bölümünü tanımlayın.

Adım 7: vbExclamation simgesini kullanarak bir Mesaj Kutusunda hata açıklamasını yazdırın.

vbExclamation, Mesaj Kutusu'na ünlem simgesini yerleştirmek için kullanılan bir sabittir.
Kod:
Sub Err_Handel()
Dim a As Integer
a = 5
Dim c As Long
On Error GoTo Errorhandler
For c = 1 To 6
no = c / a
Debug.Print no
a = a – 1
Next c
Errorhandler:
MsgBox Err.Description, vbExclamation
Exit Sub
End Sub
Adım 8: Yukarıda tanımlanan alt yordamı çalıştırın. Hemen sekmesindeki bölüm değerlerini yazdıracak ve alt yordamdan çıkarken hata işleme mesajını yazdıracaktır.


Birden fazla alt rutin ve fonksiyonla çalışırken işe yarar. Bir alt rutin bir hata nedeniyle çalışmayı durdurursa, diğer tüm prosedürleri durdurabilir. Bu nedenle, Hata işlemeyi kullanmak ve bir hata oluştuğunda alt rutinlerden çıkmak hata ayıklamayı ve hatanın kaynağını bulmayı çok kolaylaştırır.
Dikkat Edilmesi Gereken Önemli Noktalar
- Kod okunabilirliğini artırmak için Exit Sub'ı neden kullandığınızı açıklamak için yorumlar kullanın.
- Beklenmeyen durumları ele almak için Exit Sub'ı hata işlemeyle birleştirebilirsiniz. Uygun hata işlemeyi uygulamadan yalnızca Exit Sub'a güvenmeyin.
- Bir fonksiyondan VBA Exit Sub kullanmayın; bunun yerine Exit Function kullanın.
- Kod akışını karmaşıklaştırabileceğinden, birden fazla Exit Sub ifadesi içeren, derinlemesine iç içe geçmiş alt rutinlerden kaçının.
1) VBA'daki "Exit Sub" otomatik olarak kaynakları veya değişkenleri temizler mi?
Hayır, VBA'daki "Exit Sub" otomatik olarak kaynakları veya değişkenleri temizlemez. Geriye kalan kodu yürütmeden alt rutinden çıkar. Gerekirse temizleme kodda açıkça işlenmelidir.
VBA'da bir Sub prosedürünün dışında "Exit Sub" kullanırsanız, derleme hatasıyla sonuçlanacaktır. "Exit Sub", Sub prosedürlerinden erken çıkmak için Sub prosedürleri içinde kullanılmak üzere tasarlanmıştır.
Evet, VBA'da bir döngüden çıkmak için "Exit Sub"ı kullanabilirsiniz. Bunu, bir If koşulu başarısız olduğunda alt rutinden çıkacak şekilde ayarlayabilirsiniz.
Evet, bir fark var:
“Exit Sub”, bir Sub prosedüründen erken çıkmak ve kontrolü çağıran koda geri vermek için kullanılır.
“End Sub”, bir Sub prosedürünün sonunu işaretlemek için kullanılır, ancak erken çıkmaz; kod sona ulaşana kadar yürütülmeye devam eder.
