Application.WorksheetFunction ile VBA’de VLookup Fonksiyonunu Kullanmak

Merhaba,

Bu makalemizde VBA kodunuza bir Excel fonksiyonu nasıl uygulayabileceğimizi anlatacağım. Makro yazarken bazı durumlarda Excel’in yerleşik fonksiyonlarından birini kullanmak isteyebiliriz. Bu durum makro yazarken mümkündür. Örneğin Düşeyara fonksiyonunu makro kodu içinde Excel’de olduğu şekliyle kullanabiliriz.

VBA’da bulunmayan pek çok fonksiyon vardır ama yerleşik Excel fonksiyonlarından VLookup, Max, Min ve daha birçok Excel işlevini doğrudan VBA makronuzdan çağırmak için Application.WorksheetFunction uygulamasını kullanırız.

Aşağıdaki Excel tablosunda standart bir Excel fonksiyonunu kullanmak isteyelim.


Yukardaki örnekte Oya adlı personelin maaşını VLookup’u kullanarak bulmak istiyoruz . Makro ile bunu aşağıdaki gibi yazarız:

Sub VLookupFonksiyonu()

Dim ArananMaas As Double

ArananMaas = Application.WorksheetFunction.VLookup(“Oya”, Range(“A:F”), 5,0)

MsgBox Format(d1, “Currency”) ,, “VBA Vlookup fonksiyonu”

End Sub

Makro aşağıdaki gibi sonuç üretir:

Vlookup yazmaya başladığımızda altındaki etikette sadece Arg1,Arg2,Arg3,[arg4] yazdığını göreceksiniz. Haliyle Excel’deki gibi çok açıklayıcı bir etiket olmadığı göze çarpıyor ve pek kullanıcı dostu olmayan bir bilgi çıkıyor.

Bu çok kullanışlı değil, ancak sadece WorksheetFunction fonksiyonlarının argümanlarının standart Excel fonksiyonlarının argümanlarıyla aynı olduğunu bilin. Ancak sözdizimi farklı olabilir.

Excel’de formülü nasıl kullanacağınızı biliyorsanız, VBA WorksheetFunction yöntemini kullanarak formülün nasıl kullanılacağını bildiğinizden emin olabilirsiniz.

Application.WorksheetFunction kullanarak arayabileceğiniz düzinelerce işlevin sadece birine değindim . Tam bir liste için VBA Düzenleyicinizi açın ve kod yazmaya başlayın Application.WorksheetFunction. dediğinizde “Sözcük tamamlama” etkinse (Ctrl-Space), VBA makrolarınızda kullanabileceğiniz düzinelerce yerleşik Excel fonksiyonu arasında gezinebilirsiniz!

Yukardaki örnek deki gibi birçok fonksiyonu kod kısmında rahatlıkla kullanabilirsiniz. Bunun birkaç avantajı var bunlardan birisi kodlar çok kısalacaktır ikincisi yerleşik fonksiyonlar çok hızlı çalışırlar.

Özellikle topla, ortalama, mak, min tarzında fonksiyonlar çok sık kullanıldığı için yazdığımız kodlarda büyük avantaj sağlarlar.

Sonuçta var olan bir yapı mevcutsa kısa zamanda etkin kodlar yazmak isteniyorsa Application.WorksheetFunction nesnesi oldukça işe yarar biryapıdır. Bunların yanı sıra bazı fonksiyonlarda bu nesneyi kullanmayız örneğin left ,right gibi metinsel fonksiyonları Exceldeki gibi doğrudan yazarız bu fonksiyonlar için Application.WorksheetFunction nesnesi kullanılmaz.

Aşağıdaki örnekteki fonksiyonlar VBA yerleşik fonksiyonları olduğu için Application.WorksheetFunction yapısı kullanılmaz doğrudan yazılırlar.

Sub MetinselFonksiyonlar()

Dim isim as string

isim = “Cihan Doğan”

buyukharf = UCase(isim)

kucukharf = LCase(isim)

ilk2karakter = Left(isim, 2)

End Sub

Burada dikkat edilmesi gereken konu Excel’de ki fonksiyon adı ile her zaman aynı olmayabilir. Örneğin Büyükharf fonksiyonu Excel’de Upper diye yazılır VBA kısmında ise Ucase olarak yazılır bu farklara dikkat etmek gerekir.

Bir başka makalede görüşmek üzere hoşçakalın.