Excel, pek çok özelliği ve işlevi olan harika bir araçtır. Ancak, ihtiyacınız olan işlev zaten yerleşik değilse ne yaparsınız?
Bence kendin yaz. Excel için kendi özel işlevinizi oluşturduğunuzda, buna Kullanıcı Tanımlı Fonksiyon olan VBA (Macro) adı verilir.
Excel VBA Fonksiyon Yazma
- Alt + F11 tuşlarına basın.
- Bu sizi VBA’nın yazıldığı Visual Basic Düzenleyicisine götürür.
Ayrıca, Şerit’in Geliştirici sekmesindeki Visual Basic düğmesini de tıklayabilirsiniz. Geliştirici sekmesi, yalnızca Excel Seçenekleri iletişim kutusunun Şeridi Özelleştir sekmesinde Geliştirici onay kutusu işaretliyse görünür. - Geliştiricide Insert→ Modül’ü seçin.
Fonksiyonu yazmak için yukarıdaki gibi VB Editörüne gidin ve Fonksiyon kelimesiyle başlayın. Bunu, sizin belirleyeceğiniz fonksiyon ismi takip edecektir. Örneğimde, buna EnBuyukSayi adını verdim. Halihazırda kullanımda olmayan herhangi bir işlev adı olabilir.
Ardından parantez açın ve argümanları belirtin. Örneğimde Range türünde Aralik adını kullanıyorum. Ardından parantezleri kapatın.
Ardından, “as” yazın ve dönüş veri türünü belirtin. Bu durumda, veri türü olarak Long kullanıyorum.
İşlev adının her zaman işlevin içinde bir yerde, genellikle sonunda ayarlanması gerekir. Örneğimde, işlevi şu şekilde ayarladım:
Yani tüm fonksiyon şöyle görünür:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Function EnBuyukSayi(Aralik As Range) As Long Dim i As Double For Each hucre In Aralik If hucre.Value > i Then i = hucre.Value End If Next 'Fonksiyon ismi mutlaka dönüş değeri olmalı' EnBuyukSayi = i End Function |

Excel VBA Fonksiyon Çağırma
Fonksiyonu yazdıktan sonra çağırmak için kaydetmemiz gerekir. VBA fonksiyonların çalışması için Excel dosyasının mutlaka Makro İçerebilen Excel Dosyası(xlsm) olarak kaydelmesi gerekir.

Kayıt işlemi bittikten sonra aşağıdaki gibi foksiyonu çağırabiliriz.

Bu, kendi işlevinizi yazarak neler yapabileceğinizin çok basit bir örneğidir. Olasılıklar sonsuzdur, ancak elbette VBA’yı nasıl programlayacağınızı bilmeniz gerekir. Makro etkin çalışma kitaplarının dosya uzantısı .xlsm’dir.
Yorum yap