EXCEL VBA'DA KULLANICI TANIMLI FONKSİYON

 


Excel VBA Tanımlı Fonksiyon (UDF) nedir?

Excel VBA'da, Kullanıcı Tanımlı İşlev (UDF), Excel'in yerleşik işlevleri kullanılarak tek başına gerçekleştirilemeyen hesaplamaları veya görevleri gerçekleştirmek için kullanıcı tarafından oluşturulan özelleştirilmiş bir işlevdir. Excel'in yerleşik işlevleri, sayıları toplama, ortalamaları bulma ve diğer temel matematiksel işlemleri gerçekleştirme gibi birçok yaygın hesaplamayı kapsar. Ancak, bu yerleşik işlevlerin sağlanandan farklı bir çözüm sağlayabileceği durumlar vardır. İşte UDF'lerin devreye girdiği yer burasıdır.

Örneğin, Excel'in yerleşik işlevleri tarafından kapsanmayan belirli ölçütlere göre nakliye maliyetini hesaplamanız gereken bir senaryoyu ele alalım. VBA Makrosunda Kullanıcı Tanımlı İşlev oluşturarak , ağırlık, mesafe ve nakliye yöntemi gibi gerekli hesaplamaları içeren bir formül tanımlayabilirsiniz. Kod için aşağıya bakın.

VBA'da Kullanıcı Tanımlı Fonksiyon - 1

Bu UDF, diğer Excel fonksiyonları gibi herhangi bir çalışma sayfası hücresinde kullanılabilir.

VBA'da Kullanıcı Tanımlı Fonksiyon - 2
VBA'da Kullanıcı Tanımlı Fonksiyon - 3

Sağlanan örnekte, nakliye maliyetini hesaplamak için Excel VBA'da bir UDF oluşturduk. Bu UDF, kilogram başına oranı (KG), kilometre başına oranı (KM) ve seçilen nakliye türünü dikkate alır ve bize doğru nakliye maliyetini sağlar.


Kullanıcı Tanımlı Fonksiyonlar Nasıl Oluşturulur?

Örnekler

VBA'da kullanıcı tanımlı fonksiyonların kavramını ve kullanımını daha iyi anlamak için bazı örneklere bakalım:

Örnek 1 – Basit bir UDF Toplam Fonksiyonu Oluşturun

Bu örnekte, VBA'da herhangi iki değeri toplayacak ve sonucu fonksiyona girdiğimiz hücreye döndürecek basit bir kullanıcı tanımlı fonksiyon oluşturacağız.

  • Adım 1: VBE'yi açın, Excel'de Alt + F11 tuşlarına basın, şeritteki Geliştirici sekmesine tıklayın ve ardından Visual Basic düğmesine tıklayın.
VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 1 - Adım 1
  • Adım 2: VBE'de Ekle menüsüne tıklayın ve yeni bir modül oluşturmak için Modül'ü seçin.
Örnek 1 - Adım 2
  • Adım 3: Modülde, “Function” anahtar sözcüğünü ve ardından fonksiyon adını kullanarak fonksiyonu tanımlayın. Bu örneği “SumFunction” olarak adlandırın ve fonksiyonun argümanlarını parantez içinde belirtin. Bu durumda, Double türünde iki argüman kullanacağız: “num1” ve “num2”.
Örnek 1 - Adım 3

Satırın sonundaki As Double' kısmı, UDF'nin Double türünde bir değer döndüreceğini belirtir. Başka bir deyişle, num1 ve num2'nin toplamını hesaplayacak ve sonucu Double veri türü olarak sağlayacaktır.

Not: "Double", temel "Integer" veri türünden daha yüksek hassasiyetle ondalık sayıları temsil etmek için kullanılan bir sayısal veri türünü ifade eder. Pozitif ve negatif sayıları depolayabilen bir kayan nokta veri türüdür.

  • Adım 4: İstenen hesaplamayı gerçekleştiren kodu yazın. Bu örnekte, kod iki sayıyı toplar:
Örnek 1 - Adım 4
  • Adım 5: Şimdi modülü kaydedip VBE'yi kapatalım.

VBA'da Kullanıcı Tanımlı Fonksiyonu, yani "SumFunction"ı oluşturduğunuzda, bunu Excel çalışma sayfanızda kolayca kullanabilirsiniz. Bir hücreye "=SumFunction" yazmaya başladığınızda, Excel otomatik olarak UDF için vurgulanmış bir öneri görüntüler.

Örnek 1 - Adım 5a

Artık Excel çalışma sayfanızda oluşturulan UDF “SumFunction”ı kullanabilirsiniz. Örneğin, bir hücreye =SumFunction(5, 10) girebilirsiniz; bu, 15'in toplamını döndürür.

VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 1 - Adım 5b

KODUN TAMAMI

Function SumFunction(num1 As Double, num2 As Double) As Double
SumFunction = num1 + num2
End Function

Örnek 2 – Mantıksal Değerleri Test Etmek İçin Bir Fonksiyon Oluşturun

Bu örnekte, mantıksal değerleri test eden VBA'da Kullanıcı Tanımlı Bir İşlev oluşturacağız . Seçili hücrenin sayısal bir değeri varsa, UDF "Değer Doğru" mesajını döndürecek, hücre boşsa veya sıfıra sahipse, UDF "Değer Yanlış" çıktısını sağlayacaktır.

Adım 1: Yeni modülde, öncelikle Boolean türünde "value" adlı bir argüman alan "TestLogicalValue" adlı bir fonksiyon bildirerek başlayalım. Bu, fonksiyonun girdi olarak mantıksal bir değer (True veya False) beklediği ve bir sonucu dize veri türü olarak döndüreceği anlamına gelir.

Excel VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 2 - Adım 1

Not: Bir Boole değeri, iki olası durumu temsil eden bir veri türüdür: Doğru veya Yanlış.

  • Adım 2: Bir If ifadesi kullanarak, giriş değerinin True'ya eşit olup olmadığını kontrol eden bir koşul sağlayalım. Koşul doğruysa, işleve geçirilen mantıksal değer True'dur. Koşul doğruysa, kod "Value is TRUE" dizesini "TestLogicalValue" işlevine atar.

Bu, fonksiyon mantıksal değeri True olarak çağrıldığında “Değer TRUE” dizesini döndüreceği anlamına gelir.

Örnek 2 - Adım 2
  • Adım 3: Adım 2'deki koşul yanlışsa, yani mantıksal değer True değilse, kod Else bloğuna geçer. Else bloklarında, kod “Value is FALSE”ı “TestLogicalValue” işlevine atar.

Bu, fonksiyon True olmayan mantıksal bir değerle çağrıldığında (yani False olduğunda), “Değer FALSE” dizesini döndüreceğini belirtir.

Örnek 2 - Adım 3
  • Adım 4: Şimdi Function'ı kaydedip VBE'yi kapatalım.

Test etmek istediğiniz mantıksal değerin A1 hücresinde olduğunu varsayarak, herhangi bir hücreye =TestLogicalValue(A1) formülünü girin.

Örnek 2 - Adım 4a

Enter'a bastığınızda, A1 hücresindeki mantıksal değere bağlı olarak hücrenin "Değer DOĞRU" veya "Değer YANLIŞ" ifadesini görüntüleyeceğini göreceksiniz.

Excel VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 2 - Adım 4b

A1 hücresindeki değer 500 olduğundan formülümüzü girdiğimiz A3 hücresinde çıktı “Değer DOĞRU” olur.


KODUN TAMAMI

Function TestLogicalValue(value As Boolean) As String
If value = True Then
TestLogicalValue = “Value is TRUE”
Else
TestLogicalValue = “Value is FALSE”
End If
End Function


Örnek 3

Bu örnekte, bir dikdörtgenin alanını hesaplayan bir fonksiyon oluşturacağız.

  • Adım 1: Yeni Modülde, iki argüman alan “CalculateRectangleArea” adlı UDF'yi bildirir: “length” ve “width”, her ikisi de Double türündedir. Ayrıca, işlevin dikdörtgenin alanını temsil eden Double türünde bir değer döndüreceğini belirtir.
Excel VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 3 - Adım 1
  • Adım 2: Şimdi, Double türünden “area” adlı bir değişken bildirin. Dikdörtgenin hesaplanan alanını depolamak için kullanılacaktır.
Örnek 3 - Adım 2
  • Adım 3: Şimdi uzunluk ve genişlik argümanlarını çarparak dikdörtgenin alanını hesaplayan bir değişken atayalım.
Örnek 3 - Adım 3

Bu satır, “area” değişkeninin değerini UDF'nin adı olan “CalculateRectangleArea”ya atar. Daha sonra, fonksiyonun dönüş değerini hesaplanan alana ayarlar.

  • Adım 4: Modülü kaydedin ve VBA'yı kapatın.

Herhangi bir hücreye, dikdörtgenin uzunluğunun A1 hücresinde, genişliğinin ise B1 hücresinde olduğunu varsayarak =CalculateRectangleArea(A1, B1) formülünü girin.

Örnek 3 - Adım 4a
  • Adım 5: Formülü çalıştırmak için enter'a bastığınızda, hücre A1 ve B1 hücrelerindeki değerlere göre dikdörtgenin hesaplanan alanını görüntüler.

Excel VBA'da Kullanıcı Tanımlı Fonksiyon - Örnek 3 - Adım 4b

KODUN TAMAMI

Function CalculateRectangleArea(length As Double, width As Double) As Double
Dim area As Double
area = length * width
CalculateRectangleArea = area
End Function


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...