Excel VBA İşlev Eğitimi: İade, Çağrı, Örnekler

⚡ Akıllı Özet

Excel VBA Fonksiyonu, bir görevi yerine getiren ve onu çağıran yere bir sonuç döndüren bir kod bloğudur. Bu sayfa, bildirim sözdizimini, değer döndürmeyi, örnek bir toplama işlemini ve bir çalışma sayfası hücresi içinde Fonksiyon kullanımını kapsamaktadır.

  • 🎯 Tanım: Bir fonksiyon, belirli bir görevi yerine getirir ve çağıran koda tek bir sonuç döndürür.
  • 🧾 Sözdizimi: Function name(arguments) As Type bloğu açar ve End Function bloğu kapatır.
  • ↩️ Bir Değer Döndürme: Sonucu, "add" örneğinde olduğu gibi, fonksiyon adına atayın.Numbers = birinciSayı + ikinciSayı.
  • 🔢 İade Türü: "Olduğu Kadar" veya "Olduğu Kadar" Bildirmek Double Daha yavaş olan varsayılan varyanttan kaçınır.
  • 🖱️ Aranıyor: Bir komut düğmesi iki sayı geçirir ve döndürülen toplamı bir mesaj kutusunda görüntüler.
  • 📊 Çalışma Sayfasının Kullanımı: Standart bir modüldeki genel bir fonksiyon, herhangi bir hücrede kullanıcı tanımlı bir formül haline gelir.

Excel VBA Fonksiyonu

İşlev nedir?

İşlev, belirli bir görevi gerçekleştiren ve sonuç döndüren bir kod parçasıdır. İşlevler çoğunlukla çıktı için verileri biçimlendirmek, hesaplamaları gerçekleştirmek vb. gibi yinelenen görevleri gerçekleştirmek için kullanılır.

Diyelim ki siz geliştiriyorsunuz...ping Bir kredinin faizini hesaplayan bir program. Kredi tutarını ve geri ödeme süresini kabul eden bir fonksiyon oluşturabilirsiniz. Fonksiyon daha sonra kredi tutarını ve geri ödeme süresini kullanarak faizi hesaplayabilir ve sonucu döndürebilir.

Neden işlevler kullanılmalı?

Fonksiyon kullanmanın avantajları, alt programlar için listelenenlerle aynıdır: uzun bir programı yönetilebilir parçalara ayırırlar, projenin herhangi bir yerinden yeniden kullanılabilirler ve açıklayıcı bir isim, kodun ne yaptığını belgeler. Excel VBA Alt Program Eğitimi Bu avantajları eksiksiz olarak kapsar.

Fonksiyonları adlandırma kuralları

İsimlendirme kuralları da alt programlar için geçerli olanlarla aynıdır. Bir fonksiyon adı boşluk içeremez, bir harf veya alt çizgi ile başlamalıdır ve ayrılmış bir karakter olamaz. VBA Function, Private veya End gibi anahtar kelimeler.

İşlevi bildirmek için VBA Sözdizimi

Private Function myFunction (ByVal arg1 As Integer, ByVal arg2 As Integer)
    myFunction = arg1 + arg2
End Function

BURAYA sözdiziminde,

Code Action
  • “Özel İşlev myFunction(…)”
  • Burada “Function” anahtar sözcüğü “myFunction” adlı bir işlevi bildirmek ve işlevin gövdesini başlatmak için kullanılır.
  • 'Özel' anahtar sözcüğü işlevin kapsamını belirtmek için kullanılır
  • “ByVal arg1 Tam Sayı Olarak, ByVal arg2 Tam Sayı Olarak”
  • 'arg1' ve 'arg2' adında tamsayı veri türünde iki parametre bildirir.
  • işlevim = arg1 + arg2
  • arg1 + arg2 ifadesini değerlendirir ve sonucu fonksiyonun adına atar.
  • “İşlevi Sonlandır”
  • “Fonksiyonu Sonlandır” ifadesi, fonksiyonun gövdesini sonlandırmak için kullanılır.

Bir Değeri Nasıl Döndürür ve Fonksiyonun Veri Türünü Nasıl Ayarlarsınız?

Bir fonksiyonun, bir alt programın yapmadığı bir görevi vardır: bir değer döndürür. Bu değeri kontrol eden iki ayrıntı vardır ve her ikisini de gözden kaçırmak kolaydır.

İlk olarak atama işlemi var. VBA'da Return ifadesi yoktur. Bunun yerine sonucu fonksiyonun kendi adına atarsınız, bu yüzden satır şu şekilde görünür: işlevim = arg1 + arg2Eğer bu atama hiç çalışmazsa, fonksiyon hata vermek yerine sessizce boş bir değer döndürür; bu nedenle kodun her dalının bunu ayarlaması gerekir.

İkincisi, dönüş tipidir. Yukarıdaki bildirim kapanış parantezinde sona eriyor, bu nedenle fonksiyon bir Variant döndürüyor. Parantezden sonra bir As yan tümcesi eklemek, tipi düzeltir; bu daha hızlıdır, daha az bellek kullanır ve derleyicinin uyumsuzluğu yakalamasına olanak tanır.

Beyan Geri dönüşler Ne zaman kullanılmalı
Fonksiyon f(x As Long) Varyant Sonuç türü gerçekten farklılık gösterdiğinde ancak
Fonksiyon f(x As Long) As Long Uzun Sayılar ve satır sayıları gibi tam sayılar
Fonksiyon f(x As Long) As Double Double Ondalık sayı üreten herhangi bir hesaplama
f(x As Long) As String Fonksiyonu dizi Biçimlendirilmiş metin görüntülenmek üzere döndürüldü.
f(x As Long) As Boolean fonksiyonu Boole Doğru veya yanlış yanıtı veren bir doğrulama kontrolü.

💡 İpucu: Dönüş değeri belirlendikten sonra, Exit Sub'ın bir alt programdan çıkmasına benzer şekilde, Exit Function'ı kullanarak erken çıkabilirsiniz.

Örnekle gösterilen işlev:

Fonksiyonlar alt programa çok benzer. Altprogram ile fonksiyon arasındaki en büyük fark, fonksiyonun çağrıldığında bir değer döndürmesidir. Bir altprogram çağrıldığında bir değer döndürmez. Diyelim ki iki sayı eklemek istiyorsunuz. İki sayıyı kabul eden ve sayıların toplamını döndüren bir fonksiyon oluşturabilirsiniz.

  1. Kullanıcı arayüzünü oluşturun
  2. Fonksiyonu ekle
  3. Komut butonunun kodunu yazın
  4. Kodu test edin

) 1 Adım Kullanıcı arabirimi

Aşağıda gösterildiği gibi çalışma sayfasına bir komut düğmesi ekleyin

VBA İşlevleri ve Alt Program

CommandButton1'in aşağıdaki özelliklerini aşağıdaki şekilde ayarlayın.

S / N Control Varlığınızı Özellik
1 KomutDüğmesi1 İsim btnEkleNumbers
2 Başlık Ekle Numbers İşlev

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

VBA İşlevleri ve Alt Program

) 2 Adım İşlev kodu.

  1. Kod penceresini açmak için Alt + F11 tuşlarına basın
  2. Aşağıdaki kodu ekleyin
Private Function addNumbers(ByVal firstNumber As Integer, ByVal secondNumber As Integer)
    addNumbers = firstNumber + secondNumber
End Function

BURADA kodda,

Code Action
  • “Özel İşlev ekleNumbers(…)”
  • Özel bir fonksiyon olan "add"i bildirirNumbers” iki tamsayı parametresini kabul eder.
  • “Tamsayı Olarak ByVal ilkNumber, Tamsayı Olarak ByVal ikinciNumber”
  • İki parametre değişkeni bildirir firstNumber ve secondNumber
  • "eklemekNumbers = ilkSayı + ikinciSayı”
  • FirstNumber ve SecondNumber değerlerini toplar ve toplanacak toplamı atar.Numbers.

Adım 3) Yazın Code fonksiyonu çağıran

  1. Ekle düğmesine sağ tıklayın.Numbers komut düğmesi
  2. Görünümü Seç Code
  3. Aşağıdaki kodu ekleyin
Private Sub btnAddNumbers_Click()
    MsgBox addNumbers(2, 3)
End Sub

BURADA kodda,

Code Action
“MesajBox eklemekNumbers(2,3) ”
  • Add fonksiyonunu çağırırNumbers ve parametre olarak 2 ve 3'ü geçirir. Fonksiyon, beş (5) sayısının toplamını döndürür

) 4 Adım Programı çalıştırın, aşağıdaki sonuçları alacaksınız

VBA İşlevleri ve Alt Program

Yukarıdaki kodu içeren Excel'i indirin

Yukarıdaki Excel dosyasını indirin. Code

Yukarıdaki buton, VBA kodundan fonksiyonu çağırır. Bir fonksiyon, hiçbir buton kullanılmadan doğrudan çalışma sayfasından da çağrılabilir.

Çalışma Sayfası Hücresinde VBA Fonksiyonu Nasıl Kullanılır?

VBA'da yazılmış bir fonksiyon, tıpkı SUM veya VLOOKUP gibi bir hücreye doğrudan yazılabilir. Excel buna kullanıcı tanımlı fonksiyon veya UDF der ve birçok kişinin alt programlardan önce fonksiyonları öğrenmesinin nedeni budur. Üç koşulun yerine getirilmesi gerekir.

  • Bunu standart bir modülün içine yerleştirin: Düzenleyiciye Ekle, Modül seçeneğini ekleyin. Bir çalışma sayfasının arkasında veya ThisWorkbook'ta saklanan bir işlev, formül çubuğunda görünmez.
  • Bunu kamuoyuna duyurun: Yukarıdaki örnekte "Özel" seçeneği kullanılmıştır, bu da dosyayı Excel'den gizler. Varsayılan seçenek "Genel"dir, bu nedenle anahtar kelimeyi kaldırmak yeterlidir.
  • Bir değer döndürün, hiçbir şeyi değiştirmeyin: Kullanıcı tanımlı fonksiyonlar (UDF) hücreleri biçimlendiremez, satırları silemez veya başka bir hücreye yazamaz. Excel bu işlemleri engeller ve hücrede #VALUE! hatası görünür.

Aşağıdaki fonksiyon, sıcaklığı dönüştürür ve tablonun herhangi bir yerinde kullanılabilir.

Public Function CelsiusToF(ByVal Celsius As Double) As Double
    CelsiusToF = (Celsius * 9 / 5) + 32
End Function

Çalışma kitabını makro etkinleştirilmiş bir .xlsm dosyası olarak kaydedin, ardından şunu yazın: =CelsiusToF(A1) Herhangi bir hücreye yazılabilir. Sonuç, A1 hücresi değiştiğinde güncellenir ve ad, Kullanıcı Tanımlı kategorisi altındaki formül otomatik tamamlama listesinde görünür. Çalışma kitabı artık makrolar içerdiğinden, onu açan herkesin formülün #NAME? yerine bir değer döndürmesi için içeriği etkinleştirmesi gerekir.

Sık Karşılaşılan VBA Fonksiyon Hataları ve Bunların Nasıl Düzeltileceği

Derlenip yanlış sonuç döndüren fonksiyonların çoğunun dört temel sorunu vardır.

  • Bu fonksiyon boş veya 0 döndürür: Sonuç hiçbir zaman fonksiyon adına atanmadı veya bir if ifadesinin bir dalı atamayı atladı. Dönüş değerini her yolda ayarlayın.
  • Çalışma sayfası hücresinde #NAME? ifadesi: Bu işlev özel (private) olarak tanımlanmış, standart bir modül yerine bir sayfa modülünde yer alıyor veya çalışma kitabı makrolar etkinleştirilmeden kaydedilmiş.
  • Tamsayı argümanlarla taşma hatası: Örnekte, 32,767'de duran As Integer kullanılmıştır. Gerçek veriler için hem parametreleri hem de dönüş türünü Long olarak değiştirin.
  • Konunun değişmesi arayan kişiyi şaşırttı: ByVal ifadesini kullanmamak, VBA'nın değişkenin kendisini iletmesine neden olur, bu nedenle fonksiyon çağıranın değerini değiştirebilir. Bu etki istenmiyorsa ByVal ifadesini kullanın.

SSS

Doğrudan değil. Bir dizi veya özel bir tür döndürerek tek bir sonuçta birden fazla değer taşıyabilir veya ek parametreleri ByRef olarak tanımlayarak fonksiyonun çağıranın değişkenlerine geri yazmasını sağlayabilirsiniz.

Optional anahtar kelimesini, Optional ByVal Rate As örneğinde olduğu gibi, varsayılan bir değerle ekleyin. Double = 0.05. İsteğe bağlı bir parametreden sonra gelen her parametre de isteğe bağlı olmalı ve listede en sonda yer almalıdır.

Evet, örneğin Application.WorksheetFunction.Sum(Range(“A1:A10”)) gibi Application.WorksheetFunction aracılığıyla. VBA'nın zaten sağladığı Left veya Trim gibi fonksiyonlar ise bu önek olmadan doğrudan çağrılır.

Evet. Çalışma sayfasındaki formülü yapıştırın ve bir yapay zeka asistanı, adlandırılmış bağımsız değişkenlere ve tanımlanmış bir dönüş türüne sahip eşdeğer bir Genel Fonksiyon döndürecektir. Formülü değiştirmeden önce örnek satırlarda her iki sonucu da karşılaştırın.

Evet. Fonksiyonu ve formülü verin, yapay zeka asistanı argüman türü uyuşmazlığı, eksik dönüş değeri ataması veya kullanıcı tanımlı bir fonksiyonun içinden hücre değiştirme girişimi gibi nedenleri size gösterecektir.

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