Excel VBA Alt Programı: Örnekle VBA'da Sub Nasıl Çağrılır

⚡ Akıllı Özet

Excel VBA Alt Programları, değer döndürmeden bir görevi yerine getiren bir kod bloğunu gruplandırır. Bu sayfa, adlandırma kurallarını, Alt Program sözdizimini, bir komut düğmesinden Alt Programı çağırmayı ve bir Alt Programın bir Fonksiyondan nasıl farklı olduğunu ele almaktadır.

  • ???? Tanım: Bir alt program belirli bir görevi yerine getirir ve onu çağıran koda herhangi bir değer döndürmez.
  • ♻️ Tekrar Kullanılabilirlik: Bir alt program, projenin herhangi bir yerinden birçok kez çağrılabilir.
  • 🔤 Adlandırma Kuralları: Bir ad, boşluk içermez, bir harf veya alt çizgiyle başlar ve asla bir VBA anahtar kelimesi olmaz.
  • 🧾 Sözdizimi: Private Sub name(ByVal arg As String) bloğu açar ve End Sub bloğu kapatır.
  • 🖱️ Aranıyor: Komut düğmesinin tıklama olayı, alt programı çağırır ve argümanlarını ona iletir.
  • ▶ ️ Doğrudan Çalıştırma: F5 tuşu, Makrolar iletişim kutusu veya Call anahtar kelimesi, herhangi bir düğmeye basmadan bir alt programı çalıştırır.
  • 🔁 Alt veya Fonksiyon: Değer döndürülmesi gerekiyorsa Fonksiyon, aksi takdirde Alt Yordam (Sub) seçin.

Excel VBA Alt Programı

VBA'da Alt Program Nedir?

A VBA'da alt program kodda açıklanan belirli bir görevi gerçekleştiren ancak sonuç veya değer döndürmeyen bir kod parçasıdır. Alt programlar, büyük kod parçalarını yönetilebilir küçük parçalara ayırmak için kullanılır. Altprogramlar programın herhangi bir yerinden birden çok kez çağrılabilir.

Diyelim ki kullanıcı giriş verilerini kabul etmek için metin kutuları olan bir kullanıcı arayüzü oluşturdunuz. Metin kutularının içeriklerini temizleyen bir alt rutin oluşturabilirsiniz. Böyle bir senaryoda bir VBA Çağrı Alt Rutini uygundur çünkü herhangi bir sonuç döndürmek istemezsiniz.

Neden Alt Programlar kullanılmalı?

  • Kodu yönetilebilir küçük kodlara bölün: Ortalama bir bilgisayar programının binlerce ve binlerce kaynak kod satırı vardır. Bu karmaşıklığa yol açar. Alt rutinler, programı küçük, yönetilebilir kod parçalarına bölerek bu sorunu çözmeye yardımcı olur.
  • Code tekrar Kullanılabilirlik. Veritabanına erişmesi gereken bir programınız olduğunu varsayalım, programdaki pencerelerin neredeyse tamamının veritabanıyla etkileşime girmesi gerekecektir. Bu pencereler için ayrı kod yazmak yerine, tüm veritabanı etkileşimlerini işleyen bir fonksiyon yaratabilirsiniz. Daha sonra istediğiniz pencereden çağırabilirsiniz.
  • Alt rutinler ve işlevler kendi kendini belgelemektedir. Diyelim ki, accountLoanInterest ve connectToDatabase diyen bir fonksiyonunuz var. Programcı sadece alt programın/fonksiyonun ismine bakarak programın ne yaptığını anlayabilecektir.

Derleyici, bir isim yazmadan önce, ismin kısa bir kurallar dizisine uymasını bekler.

Alt Programları ve Fonksiyonları Adlandırma Kuralları

Alt rutinleri ve işlevleri kullanmak için takip edilmesi gereken bir dizi kural vardır.

  • Bir alt rutin veya VBA çağrı işlevi adı boşluk içeremez
  • Excel VBA Çağrı Alt veya işlev adı bir harfle veya alt çizgiyle başlamalıdır. Bir sayı veya özel karakterle başlayamaz
  • Bir alt program veya işlev adı anahtar kelime olamaz. Anahtar kelime, özel anlamı olan bir kelimedir. VBA. Özel, Alt, İşlev ve Son vb. kelimelerin tümü anahtar kelime örnekleridir. Derleyici bunları belirli görevler için kullanır.

Geçerli bir isim seçildikten sonra, bildirimin kendisi sabit bir kalıbı izler.

VBA Alt Yordam Sözdizimi

Bu örneği takip etmek için Excel'deki Geliştirici sekmesini etkinleştirmeniz gerekecektir. Geliştirici sekmesini nasıl etkinleştireceğinizi bilmiyorsanız şu adresteki öğreticiyi okuyun: Excel'de VBA Kontrolleri

BURAYA sözdiziminde,

Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String)
    'do something
End Sub

Sözdizimi açıklaması

Code Action
  • “Özel Alt mySubRoutine(…)”
  • Burada “Sub” anahtar kelimesi “mySubRoutine” adında bir alt program bildirmek ve alt programın gövdesini başlatmak için kullanılır.
  • Özel anahtar sözcüğü altyordamın kapsamını belirtmek için kullanılır
  • “ByVal arg1 As String, ByVal arg2 As String”:
  • arg1 ve arg2 adında iki adet dize veri türü parametresi bildirir
  • “Alt Son”
  • Altprogramın gövdesini sonlandırmak için “End Sub” kullanılır

Aşağıdaki alt program ad ve soyadını alır ve bunları bir mesaj kutusunda görüntüler.

Şimdi bu Alt Prosedürü programlayıp yürüteceğiz. Şunu görelim.

VBA'da Sub Nasıl Çağrılır

Aşağıda VBA'da Sub'un nasıl çağrılacağına ilişkin adım adım bir süreç verilmiştir:

  1. Kullanıcı arayüzünü tasarlayın ve kullanıcı kontrollerinin özelliklerini ayarlayın.
  2. Alt programı ekleyin
  3. Alt yordamı çağıran komut düğmesi için tıklama olay kodunu yazın
  4. Uygulamayı test edin

) 1 Adım Kullanıcı Arayüzü

Kullanıcı arayüzünü aşağıdaki görüntüdeki gibi tasarlayın.

VBA'da Sub Nasıl Çağrılır

Aşağıdaki özellikleri ayarlayın. Ayarladığımız özellikler:

S / N Control Varlığınızı Özellik
1 KomutDüğmesi1 İsim btnGörüntüTam Ad
2 Başlık Tam Ad Alt Program

Arayüzünüz artık aşağıdaki gibi görünmelidir.

VBA'da Sub Nasıl Çağrılır

) 2 Adım Alt program ekle

  1. Kod penceresini açmak için Alt + F11 tuşlarına basın
  2. Aşağıdaki alt rutini ekleyin
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String)
    MsgBox firstName & " " & lastName
End Sub

BURADA kodda,

Code İşlemler
  • “Özel Alt ekranTamAd(…)”
  • İki dize parametresi kabul eden displayFullName adlı özel bir alt rutin bildirir.
  • “ByVal name As String, ByVal lastName As String”
  • firstName ve lastName olmak üzere iki parametre değişkeni bildirir
  • msgBox isim soyisim"
  • Msj'yi çağırıyorBox Bir ileti kutusu görüntülemek için yerleşik işlev. Daha sonra 'firstName' ve 'lastName' değişkenlerini parametre olarak geçirir.
  • Ve işareti “&” iki değişkeni birleştirmek ve aralarına boşluk eklemek için kullanılır.

) 3 Adım Altprogramın çağrılması

Altprogramın komut düğmesi tıklama olayından çağrılması.

  • Aşağıdaki resimde gösterildiği gibi komut düğmesine sağ tıklayın. "Görüntüle"yi seçin. Code.
  • Kod düzenleyici açılacak

VBA'da Sub Nasıl Çağrılır

btnDisplayFullName komut düğmesinin tıklama olayı için kod düzenleyiciye aşağıdaki kodu ekleyin.

Private Sub btnDisplayFullName_Click()
    displayFullName "John", "Doe"
End Sub

Kod pencereniz artık aşağıdaki gibi görünmelidir

VBA'da Sub Nasıl Çağrılır

Değişiklikleri kaydedin ve kod penceresini kapatın.

) 4 Adım Kodu test etme

Geliştirici araç çubuğunda tasarım modunu 'kapalı' duruma getirin. Aşağıda gösterildiği gibi.

VBA'da Sub Nasıl Çağrılır

) 5 Adım 'Tam Ad Alt Programı' komut düğmesine tıklayın.

Aşağıdaki sonuçları elde edeceksiniz

VBA'da Sub Nasıl Çağrılır

Yukarıdaki Excel dosyasını indirin. Code

Bir düğme kullanışlıdır, ancak bir alt programı başlatmanın tek yolu değildir ve geliştirme sırasında nadiren en hızlı yöntemdir.

Düğme Kullanmadan Alt Program Nasıl Çalıştırılır

Hâlâ kod yazarken, bir alt programı test etmek için sayfaya bir kontrol eklemek zaman kaybıdır. VBA, bir alt programı çalıştırmak için dört farklı yol sunar ve her biri geliştirme döngüsünün farklı bir anına uygundur.

  • Editörde F5 tuşuna basın: İmleci alt programın herhangi bir yerine yerleştirin ve F5 tuşuna basın. Program hemen çalışır. Bu yalnızca alt program hiçbir argüman almadığında işe yarar, çünkü VBA'nın sağlayacak hiçbir değeri yoktur.
  • F8 tuşuyla ilerleyin: Aynı işlemi satır satır çalıştırın, böylece Yerel Değişkenler penceresinde her değişkenin nasıl değiştiğini izleyebilirsiniz. Sonuç yanlış olduğunda ve hatanın nerede olduğunu görmek istediğinizde kullanın.
  • Makrolar iletişim kutusunu kullanın: Geliştirici sekmesinde, Makrolar'a tıklayın, bir isim seçin ve Çalıştır'a tıklayın. Bu listede yalnızca bağımsız değişken içermeyen Genel Alt Programlar görünür; bu nedenle yardımcı bir Alt Program genellikle Özel olarak tanımlanır.
  • Başka bir alt programdan çağırın: Bu, argüman alan herhangi bir alt program için kullanılan yöntemdir ve yukarıdaki komut düğmesi de bu yönteme dayanmaktadır.

Son seçeneğin iki kabul edilen biçimi vardır. İsmi ardından yalın argümanları yazmak işe yarar, aynı şekilde açıkça Call anahtar kelimesini kullanmak da işe yarar, ancak parantez kuralı aralarında farklılık gösterir.

Sub RunTheGreeting()
    ' Form 1: no Call keyword, no brackets
    displayFullName "John", "Doe"

    ' Form 2: Call keyword, brackets required
    Call displayFullName("Jane", "Roe")
End Sub

İki satır da tamamen aynı şeyi yapıyor. Köşeli parantezleri `Call` anahtar kelimesi olmadan yazarak iki formu karıştırmak, bir Sub birden fazla argüman aldığında "Expected: =" derleme hatasının en yaygın nedenidir.

VBA'da Sub ve Function Arasındaki Fark

VBA'da iki prosedür türü vardır: Sub ve Function. Yeni başlayanlar genellikle yanlış olanı seçerler. Karar verme sorusu basittir: Çağıran kodun bir değere ihtiyacı var mı?

Özellik Alt İşlev
Bir değer döndürür Yok hayır Evet, fonksiyon adına atandı.
Bildirildi Alt … Alt Alt Fonksiyon … Fonksiyon Sonu
Olarak adlandırılan Kendi satırında bir açıklama Bir ifadenin bir parçası, örneğin x = myFunc(2)
Çalışma sayfası hücresinde kullanılabilir. Yok hayır Evet, kullanıcı tanımlı bir fonksiyon olarak.
Tipik kullanım Sayfayı biçimlendir, giriş alanlarını temizle, mesaj göster Toplam hesapla, değer dönüştür, veri ara

Kod çalışma kitabına etki ediyorsa bir Sub kullanın ve VBA Fonksiyonu Kodun ürettiği bir yanıtın başka bir şey tarafından tüketilmesi.

SSS

Özel bir alt yordam (private sub) yalnızca onu tanımlayan modülün içinden çağrılabilir. Genel bir alt yordam (public sub) ise projedeki her modül tarafından görülebilir ve Makrolar iletişim kutusunda yalnızca bu tür alt yordam görünür.

ByVal, değişkenin bir kopyasını geçirir, bu nedenle alt program çağıranın değişkenini değiştiremez. ByRef ise değişkenin kendisini geçirir, bu nedenle yapılan herhangi bir değişiklik çağıran tarafından görülebilir. Her iki anahtar kelime de yazılmadığında varsayılan olarak ByRef kullanılır.

Exit Sub ifadesini kullanın. Bu ifade, prosedürü o noktada durdurur ve kontrolü onu çağıran işleme geri verir; bu da doğrulama testi başarısız olduğunda erken çıkmak için kullanışlıdır.

Evet. Makroyu yapıştırın ve bir yapay zeka asistanı ilgili satırları gruplandırır, her yeni alt program için açıklayıcı bir ad önerir ve orijinalini kısa bir çağrı dizisi olarak yeniden yazar. Sonucu çalışma kitabının bir kopyasında test edin.

Evet. Hata metnini ve çağrı satırını verin, yapay zeka asistanı Call anahtar kelimesi olmadan kullanılan parantezler, yanlış argüman sayısı veya uyumsuz veri türü gibi nedenleri belirleyip düzeltilmiş satırı sağlayacaktır.

Bu yazıyı şu şekilde özetleyin: