VBA'da Kullanıcı Tanımlı İşlev - UDF Nasıl Oluşturulur? (Örnekler)

Excel VBA Kullanıcı Tanımlı İşlev (UDF)

Microsoft, Excel'deki çalışmayı hızlandırmak için bize birçok yerleşik işlev sunar. Ancak VBA kodlamasını kullanarak kendi işlevlerimizi oluşturabiliriz ve bu işlevler teknik olarak "Kullanıcı Tanımlı İşlevler" (UDF) olarak adlandırılır. Ayrıca excel VBA'da "özel işlevler" olarak adlandırılırlar.

Çalışma sayfasından bir kod parçasıyla erişilebilen herhangi bir formüle UDF denir. Basit bir ifadeyle, yerleşik olmayan ancak Excel'de bulunan herhangi bir formüle Kullanıcı Tanımlı İşlevler denir.

Kullanıcı Tanımlı İşlevler Nasıl Oluşturulur?

UDF modülümüzün bir parçası olsa da, VBA'daki normal Alt Yordamımızın bir parçası değildir. Bu, VBA'da İşlev Prosedürü olarak adlandırılır. Makro kodlamaya benzer şekilde SUB kelimesiyle nasıl başladığımız gibi, buna "Fonksiyon" kelimesini kullanarak başlamalıyız. Alt yordamın başlangıcı ve Sonu vardır, İşlev Prosedürü benzer şekilde Başlangıç ​​ve Sona sahiptir.

Örnek 1 - Basit bir UDF Toplam İşlevi Oluşturma

Excel'de iki sayı ekleyerek kendi SUM fonksiyonumuzu oluşturacağız.

  • Kodlamaya başlamak için modüllerden birinde "Fonksiyon" kelimesini başlatın.
  • Makroyu benzer şekilde isimlendirmemiz gibi, Function'a da bir isim vermemiz gerekiyor. Bu ad, formül adı olarak kullanılır.

Alt rutinin aksine, bir prosedür oluşturmak için sadece enter tuşuna basamayız, ancak burada argümanlardan bahsetmemiz gerekir.

Örneğin, SUM çalışma sayfası işlevinin aşağıdaki sözdizimine bakın.

Sayı 1, Sayı 2, TOPLA işlevinin bağımsız değişkenleridir.

  • Benzer şekilde, argümanlarımızdan bahsetmemiz gerekiyor.

Burada argümanları “x olarak Tamsayı” ve “y'yi Tamsayı” olarak ilan ettim. Sayısal değer eklediğimiz için, veri türünü yalnızca sayısal veri türü olarak atamamız gerekir.

Argümanları bildirdikten sonra, Tamsayı'nın dönüş türünü de atadım çünkü "OurSum" Fonksiyonu tarafından verilen sonuç aynı zamanda sayısal bir değerdir.

  • Şimdi fonksiyonun içinde, kullanacağımız formüle değinmemiz gerekiyor. Burada başlamak için işlevi kullanmamız gerekiyor.

" OurSum " formül adının x ve y eklemesi gerektiğinden bahsetmiştik .

  • Tamam, kodu kaydedin ve çalışma sayfasına gidin.
  • Buraya birkaç numara girdim. Eşittir işaretini açın ve OurSum yazmaya başlayın. Burada görünen formül adını görebilirsiniz.
  • Hücreleri nasıl seçtiğimiz gibi, iki hücreyi ayrı ayrı seçeriz.
  • İki hücre seçtikten sonra, sonuçları almak için enter tuşuna basın.

Yani normal TOPLA işlevimizle tamamen aynı şekilde çalışır.

  • Tamam, şimdi numaraları değiştireceğim.
  • Şimdi yine yarattığımız fonksiyonu uygulayacağım.

Oh !!! İlk hücre dışında hata değerleri aldık.

Neden hata yaptığımızı düşünüyor olmalısın.

A2 ve B2 hücresini gözlemlerseniz, 48170 ve 21732 değerlerine sahibiz. Veri türünü Tamsayı olarak atadığımız için, 32767'den fazla bir sayı tutamaz. Excel hatasını #SAYI! Olarak almamızın nedeni budur.

Şimdi 32767'den küçük sayılar ekleyeceğim.

Yukarıdaki resimde, tüm sayılar tam sayılardır, yani 32767'den küçüktür.

İlk hücrede sonuçları aldık. Ancak ikinci hücrede, yani C2 hücresinde, hata değerini # DEĞER! Olarak aldık.

Her iki sayı da 32767'den az olsa da yine de hatayı alıyoruz.

Bunun nedeni, nihai sonucu da Tamsayı olarak ilan etmiş olmamızdır.

Yani 16000 ve 17229'u topladığımızda, 32767 tamsayı veri türü sınırından daha fazla olan 33229 gibi bir değer elde edeceğiz. Yani sonuç bir hata değeridir.

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

Mantıksal değerleri test etmek için bir fonksiyon daha oluşturacağız. Sayı> = 60 ise "İyi" döndüren bir işleve ve sayı <= 50 ise sonuca "Kötü" olarak ihtiyacımız var.

Adım 1: İşlev Prosedürünü başlatın ve prosedüre bir isim verin.

Adım 2: Argümanı TestScore olarak Integer olarak verin.

3. Adım: Son sonucumuz "İyi" veya "Kötü" olmalıdır, bu nedenle sonuç String'de olmalıdır.

Adım 4: Öncelikle puanın> = 60 olup olmadığını test etmemiz gerekiyor. Test etmek için IF koşulunu kullanın.

5. Adım: Test puanı> = 60 ise, sonucu "İyi" olarak döndürmek için işleve ihtiyacımız var. Yani TestResult = "İyi."

6. Adım: Test puanı 60'ın altındaysa işlev sonucu "Kötü" olmalıdır.

Tamam, bitirdik.

  • Kodu kaydedin ve çalışma sayfasına gidin.

Buraya test puanı olarak birkaç sayı girdim.

  • Sonuçlara ulaşmak için oluşturduğumuz işlevi uygulayın.
  • Hücreyi seçin ve enter tuşuna basın.

UDF bununla ilgili.

Ilginç makaleler...