
Excel VBA Call Sub Nedir?
Aşağıdaki örneği ele alalım.

Burada, bir metni yazdıran ve çıktıyı yazdırmak için CallSub() fonksiyonundan çağıran bir alt rutin yazıyoruz.

Not: VBA'nın daha yeni sürümlerinde, VBA 6'dan başlayarak (Office 2000 ve sonraki sürümlerde kullanılır), "Call" anahtar sözcüğü isteğe bağlıdır. Bu nedenle, bunu atlayabilir ve alt yordamı doğrudan çağırabilirsiniz.
Önemli Noktalar
- Call Sub , bir VBA modülü içinden bir alt prosedürü çağırmak için kullanılır.
- Başka bir prosedürden bir Alt prosedürü çağırmak için, prosedürün adını yazın ve gerekli tüm argümanlar için değerleri ekleyin. Call ifadesi gerekli değildir, ancak kullanırsanız, tüm argümanları parantez içine almalısınız.
- Call Sub , bir fonksiyonun aksine bir değer döndürmez.
- Call Sub'ın bir Return ifadesi yoktur. Bir Sub prosedüründe kullanılan bir ifade, iki nokta üst üste ve eşittir sembolüyle adlandırılmış argümanlar kullanarak çağrılan prosedüre değerler geçirir.
Excel VBA'da Alt Rutin Nasıl Çağrılır?
Excel VBA'da VBA Çağrı Alt Rutinini uygulamak için aşağıda gösterildiği gibi şu adımları gerçekleştiriyoruz:
- Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, VBA Editörü fonksiyonlar ve Alt prosedürler eklemek için açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.


- Verilen bir değişken üzerinde 1 ile toplama işlemini gerçekleştirmek için bir alt prosedür başlatın.

- Bir Tamsayı giriş değişkeni kabul edin.

- Tam sayı değişkenine bir ekleyin ve yazdırın.

- VBA Çağrı Alt işlemini gerçekleştirmek için başka bir alt rutin başlatın.

- VBA Çağrı Alt işlemini gerçekleştirin.

Kod:
Sub AddOne()
num = 10
num = num + 1
Debug.Print num
End Sub
Sub CallS()
AddOne
End Sub - VBA araç çubuğundaki F5 veya Çalıştır düğmelerine basarak sayıyı yazdırın.

num'ı 10 olarak bildirdiğimizden ve fonksiyonda tanımlandığı gibi buna 1 eklediğimizden 11 yazdırır. Dolayısıyla çıktı 11 olarak gösterilir.
Örnekler
VBA Alt Çağrı prosedürünün uygulanmasına ilişkin birkaç örneğe bakalım.
Örnek 1 – Başka bir modülden VBA Çağrısı Alt
Başka bir sayfadan üç sayı ekleyerek bir VBA Çağrı Alt işlemini uygulamamız gereken bir örneği ele alalım.
Adım 1: Araç çubuğundaki “Geliştirici” sekmesinde , “Visual Basic” seçeneğine tıklayın ve yeni bir modül açın. Üç sayıyı toplayan ve çıktıyı yazdıran bir alt prosedür tanımlayın.

Adım 2: Üç sayının toplam değerini tutacak bir tam sayı tanımlayın.

Adım 3: Üç değişkeni de toplayın ve toplamı önceki adımlarda bildirilen sonuç değişkenine atayın.

Adım 4: Sonuç değişkenini yazdırın.

Adım 5: Yeni bir modül veya boş bir sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.

Adım 6: Değişkenle VBA Çağrısı Alt işlemini gerçekleştiren yeni modülde yeni bir alt rutin oluşturun.

Adım 7: Toplanacak üç tam sayı değişkeni bildirin.

Adım 8: Kullanıcıdan sayıları alın.

Adım 9: Şimdi, alt rutinle birlikte Modül adını çağırarak başka bir sayfadan Alt Çağrı işlemini gerçekleştirin.

Parametrelerle VBA Call Sub gerçekleştirir. Burada, bir modülden diğer herhangi bir modüle alt rutinleri çağırabiliriz.
Kod:
Sub SumOfThreeNumbers(ByRef n1 As Integer, ByRef n2 As Integer, ByRef n3 As Integer)
Dim res As Integer
res = n1 + n2 + n3
Debug.Print “The sum is: ” & res
End Sub
Başka bir modülde:
Sub GetThreeNumbers()
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
n1 = InputBox(“Bir sayı girin”)
n2 = InputBox(“Bir sayı girin”)
n3 = InputBox(“Bir sayı girin”)
Module1.SumOfThreeNumbers n1, n2, n3
End Sub
Adım 10: İkinci modüldeki VBA kodunu çalıştırın . Çıktı gösterildiği gibi yazdırılır:



Toplam, gösterildiği gibi Hemen sekmesinde yazdırılacaktır.

Örnek 2 – Birden fazla argümana sahip VBA Çağrı Alt
Birden fazla argümanla VBA Call Sub'a ihtiyacınız olan bir örneği düşünün. Bir alt yordamda birden fazla argüman olabilir. Üç girdiyle AND Gate işlevini uygulayan alt yordamlar oluşturmalısınız.
Adım 1: Yeni bir modülde, Boole VE Kapısını taklit eden bir alt prosedür başlatın.

Adım 2: Sonuç değişkenini Boolean olarak tanımlayın.

Adım 3: Tüm üç değişken değerinin “Doğru” olup olmadığını kontrol etmek için bir If-Else koşulu başlatın.

Üçü de "True" ise, sonuç True olarak döndürülür. Değilse, sonuç değeri "False" olarak döndürülür.
Adım 4: Sonucu yazdırın.

Adım 5: Kullanıcıdan gelen girdi olarak Boolean giriş argümanlarını kabul eden ve parametrelerle VBA Çağrı Alt işlemini gerçekleştiren bir alt rutin tanımlayın.

Adım 6: Üç değişkeni Boolean veri türü olarak tanımlayın.

Adım 7: Üç değişkenin de girdisini kabul edin.

Adım 8: And Gate alt rutini için argümanlarla VBA Alt Çağrısı.

Kod:
Sub AndGate(x As Boolean, y As Boolean, z As Boolean)
Dim res As Boolean
If (x = True And y = True And z = True) Then
res = True
Else: res = False
End If
Debug.Print “The result is: ” & res
End Sub
Sub InputsForGate()
Dim x As Boolean
Dim y As Boolean
Dim z As Boolean
x = InputBox(“True or False”)
y = InputBox(“True or False”)
z = InputBox(“True or False”)
AndGate x, y, z
End Sub
Adım 9: Yukarıdaki kodu çalıştırın.



Bu, hemen açılan sekmede "True" ifadesinin yazdırılmasıyla sonuçlanacaktır.

Örnek 3
Değişkenlerle VBA Alt Çağrısı kullanarak dize birleştirmesi yapmanız gereken bir örneği ele alalım . Burada iki dize değeri kabul ediyoruz ve her iki dize değerini de tek bir birleştirilmiş dizeye birleştiriyoruz.
Adım 1: İki dizeyi birleştirmek için bir alt prosedür başlatın.

Adım 2: Birleştirilmiş dize değerlerinin değerini tutacak bir değişkeni, sonuç olarak, bir dize olarak bildirin.

Adım 3: Birleştirilmiş dizeyi yazdırın.

Adım 4: Dize birleştirme alt yordamını çağıracak alt yordamı bildirin.

Adım 5: İki dize bildirin ve değerlerini başlatın.

Adım 6: Birleştirme alt yordamını argümanla VBA alt çağrısı.

Kod:
Sub ConcatenateStrings(s1 As String, s2 As String)
Dim result As String
result = s1 & s2
Debug.Print “The concatenated strings are: ” & result
End Sub
Sub CallString()
Dim string1 As String
Dim string2 As String
string1 = “Hello”
string2 = “World!”
ConcatenateStrings string1, string2
End Sub
Adım 7: Çıktı aşağıdaki gibidir:

Dikkat Edilmesi Gereken Önemli Noktalar
- Gerektiğinde alt rutinlere argümanlar geçirin. Argümanlar, alt rutinlere değerler veya nesneler geçirmenize olanak tanır ve bunların belirli verilere dayalı görevleri gerçekleştirmesini sağlar.
- Argüman değerlerinin veya değişkenlerin çağrılan alt rutinin beklenen parametreleriyle eşleştiğinden emin olun.
- "Call" anahtar sözcüğünü gereksiz yere kullanmayın. VBA'nın daha yeni sürümlerinde, VBA 6'dan başlayarak, "Call" anahtar sözcüğü isteğe bağlıdır ve bir alt rutini doğrudan onsuz çağırabilirsiniz.
- Fonksiyonlar kullanılarak daha iyi gerçekleştirilebilen görevler için alt rutinleri kullanmayın. Fonksiyonlar değerler döndürebilir ve bu da sonucu doğrudan ifadelerde kullanmanıza olanak tanır.