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.

İş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 |
|---|---|
|
|
|
|
|
|
|
|
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.
- Kullanıcı arayüzünü oluşturun
- Fonksiyonu ekle
- Komut butonunun kodunu yazın
- 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
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
) 2 Adım İşlev kodu.
- Kod penceresini açmak için Alt + F11 tuşlarına basın
- 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 |
|---|---|
|
|
|
|
|
|
Adım 3) Yazın Code fonksiyonu çağıran
- Ekle düğmesine sağ tıklayın.Numbers komut düğmesi
- Görünümü Seç Code
- Aşağıdaki kodu ekleyin
Private Sub btnAddNumbers_Click() MsgBox addNumbers(2, 3) End Sub
BURADA kodda,
| Code | Action |
|---|---|
| “MesajBox eklemekNumbers(2,3) ” |
|
) 4 Adım Programı çalıştırın, aşağıdaki sonuçları alacaksınız
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.



