Excel VBA-3: Fonksiyonlara ve Operatörlere Giriş

                    Excel’de önceki yazımızda sizlere subrutinleri anlattım. Bu bölümde ise subrutinlerin ruh ikizi fonksiyonları anlatacağız.
              Önceki yazımızı okuduysanız makro kodlarına nasıl erişeceğinizi öğrenmiş olmalısınız. Okumadıysanız önceki yazımıza geri dönmenizi şiddetle tavsiye ediyorum.
              Öncelikle makro kaydı yapar gibi yapıyoruz. Herhangi bir işlem yapmadan makroyu durduruyoruz. Daha sonra önceki dersimizdeki gibi makro kodunu açıyoruz. Buraya kadar tüm bilgiler önceki yazılarımda mevcut.

 

 

Ben örnek olması açısından makroya “Hesapla” ismini verdim. Görselde göreceğiniz üzere önceki makro kaydım da aynı kod modülünde durmaktadır. Ancak bu iki rutinin birbiriyle bir ilişkisi yoktur. “End Sub” yazan yerden sonrası üstteki subrutini ilgilendirmemektedir.
Bu yeni fonksiyonun başındaki “Sub” yazısı bunun bir subrutin olduğunu ve değer döndürmediğini(!) belirtmektedir. Biz bu mavi ile işaretlediğim yere Sub yerine Function yazacağız. Başka satıra geçtiğinizde, “End Sub” kısmının da “End Function” şeklinde değiştiğini göreceksiniz.
Eğer hata yaparsanız sizi bir mesaj kutusu ile uyaracak ve hatalı kod satırını kırmızı renkli gösterecektir.
Fonksiyon görselimizde dikkatini çekmiştir: Virgül ile ayrılan SayiA ve SayiB şeklinde 2 etiketimiz var. Bunlara değişken denilmektedir. Aynı zamanda fonksiyona dışarıdan verilen bir değer olduğu için parametre olarak da isimlendirilmektedir. Matematik denklemlerindeki x ve y neyse, burada kafama göre isimlendirdiğim SayiA ve SayiB değişkenlerini de aynı amaçla kullanacağız.
Kısa bilgi… Değişken isimleri rakam ve alt tire(_) ile başlayamaz. İçerisinde bu karakterler dışında özel karakter kullanılamaz. Türkçe karakterleri de kullanmamanızı tavsiye ederim.
Buraya kadar sorunsuz geldiysek, geriye fonksiyonun içerisini tasarlamak kalıyor. Fonksiyon görselimizde imleç olan yere 1 defa TAB tuşuna basarak 1 sekme(4 boşluk) içeri geçelim ve kodlamaya o hizada devam edelim. İlk deneme fonksiyonumuz için görseldeki gibi Hesapla = SayiA + SayiB yazın.
Burada denklemin sol tarafındaki değişkenimiz atama yapılacak değişkendir. Eşittirin sağındakiler ise hesaplamaya tabi tutulacak değişkenlerimizdir.

 

 

 

 

 

 

 

 

Excel sayfasına dönüp eşittiri koyduğumuzda fonksiyonlar arasında Hesapla fonksiyonumuz olduğunu göreceksiniz. Parantez açtığınızda herhangi bilgi gelmeyecek, ama tahmin edeceğiniz üzere 2 adet hücre seçmenizi ya da 2 değer girmenizi bekleyecek. Fonksiyon şu haliyle seçtiğiniz iki hücreyi ya da değeri toplayıp sonucu da formülü yazdığınız yere yazacaktır.

Eğer 2 değer yetmiyorsa, araya virgül atarak onlarca değişken tanımlayabilirsiniz. Ancak şu haliyle tüm değişkenleri fonksiyona bildirmek zorundasınız. Sayi A, B, C kaç değişkeniniz varsa, hepsinin bir değeri olmak zorundadır.

Peki toplamadan başka ne yapabiliriz.

Tabi ki 4 işlemi yapabiliriz; toplama (+) , çıkarma (-), çarpma (*) ve bölme (/)…

 

Bunların dışında;

Hesapla = SayiA ^ SayiB              ‘ile SayıA üzeri SayiB yani üslü sayı sonucunu alabilirsiniz.

Hesapla = SayiA MOD SayiB       ‘yazıp modüler aritmetik ile bölümden kalanı bulabilirsiniz.

Hesapla = (SayiA AND SayiB) OR NOT(SayiA OR SayiB)  ‘gibi mantıksal işlemler yapabilirsiniz.

 

              Bilindiği üzere mantıksal ifadeler sıfıra(0) eşitse YANLIŞ(False), değilse DOĞRU(True) olarak işlem görmektedir.

              AND : Exceldeki VE formülü gibi çalışmaktadır. Excelden de bildiğiniz gibi AND yazısının iki tarafındaki değerler sıfırdan farklı(Doğru-True) ise DOĞRU(True), değilse YANLIŞ(False) anlamına gelmektedir.

OR : Exceldeki YADA formülü gibi iş görmektedir. İki değerden biri 0’dan farklı(Doğru-True) ise DOĞRU(True) değerini döndürecektir.

XOR : Exceldeki karşılığı ÖZELVEYA fonksiyonudur. İki değer mantıksal olarak eşitse, yani Doğru-Doğru ya da Yanlış-Yanlış ise YANLIŞ değeri, diğer durumlarda DOĞRU değeri döndürür.

NOT() : İçine yazdığınız değer YANLIŞ(False ya da 0) ise DOĞRU(True) sonucu döndürür. Aksi halde YANLIŞ(False) sonucu döndürür.

 

Bunların dışında matematiksel denklemlerinizi oval parantez() ile gruplayabilir, işlem önceliğini değiştirebilirsiniz. Parantez kullanmadığınız taktirde öncelik sırasına göre işlem yapacaktır. Öncelik sırası üs, çarpma-bölme, modüler aritmetik ve en son toplama-çıkarma şeklindedir. Ancak parantez kullanmanızı tavsiye ediyorum.

              Fonksiyonlarda ve subrutinlerde, kendisini ve diğer fonksiyonları çağırmak mümkündür. Ancak bunun işletim sistemine göre belirli bir sınırı olup, kodlama sonsuz döngüye girebileceğinden burada bahsetmiyorum.

Fonksiyonları en basit haliyle sizlere anlatmaya çalıştım. Umarım faydalı olmuştur. Okuduğunuz için teşekkürler ederim.

 

 

Hesaplarınız tutsun, işleriniz kolay olsun. J

Paylaş:

Diğer Blog Yazıları

Skip to content