Bu yazımızda sizlere; makro tarafında olmazsa olmaz bir karar/koşul yapısından bahsediyor olacağım. Yazının sonunda IF Karar yapısı nedir, ne zaman ve nasıl kullanılırı öğrenmiş olacağız.
IF KARAR YAPISI NEDİR?
Bu
koşul yapısı; bütün programlama dillerinde olan, bazı şartların gerçekleşmesi veya gerçekleşmemesi durumunda ayrı-ayrı kod bloklarının çalıştırılmasına imkân veren yapıdır.
Belirtilen koşuldan geri dönen True/False Boolean değerine göre işlemler yapabilmenizi sağlar.
Eğer koşulun True Doğru olduğu söylenirse, belirtilen koşul(lar)ın altında bulunan ifadeler uygulanır.
Koşulun False Yanlış olduğu söylenirse, IF yapısından sonra belirtilen ifadeler uygulanır. İlaveten, duruma göre Else veya ElseIF ifadelerini belirttiysek o satırların da kontrolünü sağlar ve ne zaman sonuç True dönerse orada belirtilen komutlar uygulanır.
NE ZAMAN KULLANILIR?
Kod yazarken, Eğer ile başlayan bir düşüncemiz/şartımız varsa ve bir veya birden fazla şarta göre işlemler yaptırmak istiyorsak genellikle bu yapıyı kullanırız. Bu yapıdan başka birkaç Karar/Koşul yapısı daha mevcuttur, bunlar; Select Case, IIF, Choose ve Switch yapılarıdır. Bu yapılara da hâkim olmak kod yazarken sizi rahatlatacaktır.
NASIL KULLANILIR?
Öncelikle yazım kalıbı veya söz dizimi dediğimiz durumu, yani bu IF yapısını VBA tarafında nasıl yazabiliriz ona bir bakalım.
YAZIM KALIBI
Yazım kalıbı Syntax aşağıdaki gibidir..
Mavi renkli kısımlar sabittir.
Kırmızı renkli kısımlar değişkendir.
If koşul(lar) Then
‘Kodlarınız
End If
Mantık olarak kabaca şöyle düşünebilirsiniz; “Eğer bu sayı 10’dan büyükse bunları yap.” gibi..
Eğer tek bir koşulumuz şartımız varsa, yukarıdaki kalıbı bu şekilde de kullanabilirsiniz.
If koşul(lar) Then ‘Kodlarınız
Tek şart varsa, End If ifadesini kaldırıp, koşulu Then ifadesinin yanına yazabilirsiniz.
If ve Then arasındaki koşulumuz da, duruma göre birden fazla olabilir.
Yani örneğin; A sütunundaki hücrelerdeki sayılar 10‘dan büyükse ve boş değilse gibi, And, Or, Xor vb. Mantıksal operatörleri de kullanabilirsiniz.
Şimdi bu kısmı tam olarak anlamanız için ufak bir kod örneği verelim..
If sayi > 10 And sayi < 20 Then
Tek bir If .. Then kalıbı arasında mantıksal operatörler kullanarak, koşulumuzu kendi içinde 2-3-4…’e çıkarabilirsiniz. Diyelim ki; A2:A10 hücre aralığında bazı sayılarımız var ve bu sayılardan 10‘dan büyük olanların B sütununa büyük ifadesini yazdıralım.
Bunun için bize gerekli olan kodlar bu şekildedir;
Sub IF_Kosul_Yapisi() For i = 2 To 10 If Cells(i, "A") > 10 Then Cells(i, "B") = "Büyük" End If Next i End Sub
Bu kodların nasıl çalıştığını gif resimde görerek daha iyi anlayabilirsiniz.
BİRDEN FAZLA KOŞUL VE ELSE
Eğer birden fazla koşulumuz var ise ve mantık olarak, Eğer böyleyse bunu yap, değilse şunu yap gibi, iki farklı duruma göre işlem yapmak istiyorsanız, bunu da yine tek bir satırda bu şekilde yazabileceğiniz gibi;
If Cells(i, "A") > 10 Then Cells(i, "B") = "Büyük" Else Cells(i, "B") = "Küçük"
alt alta Else ifadesiyle birlikte de yazabilirsiniz. O zaman kalıbımız bu şekilde olacaktır.
If koşul(lar) Then
‘Doğruysa Kodlarınız
Else
‘Yanlışsa Kodlarınız
End If
Örnek kodlarımız..
If Cells(i, "A") > 10 Then Cells(i, "B") = "Büyük" Else Cells(i, "B") = "Küçük" End If
Yukarıdaki kod, 10‘dan büyük olan hücrelerin B sütununa Büyük, küçük olanların da B sütununa Küçük yazar.
ELSEIF
Şimdi de ElseIf DeğilseEğer ifadesini dahil ederek koşullarımızı artıralım.
Bu kalıpta da mantığı kabaca şöyle düşünebilirsiniz; “Eğer bu böyleyse bunu yap, değilse eğer şöyleyse şunu yap, değilse eğer öyleyse onu yap.” gibi..
Yazım Kalıbı bu şekildedir..
If koşullar Then
‘kodlarınız
ElseIf koşullar Then
‘kodlarınız
ElseIf koşullar Then
‘kodlarınız
End If
Sonuc sütununa sonuçlarımızı bu şartlara göre yazdıralım.
- Eğer sayı sıfıra eşitse Sıfır yazsın.
- Eğer sayı 10’a eşitse Eşit yazsın.
- Eğer sayı 10’dan küçükse Küçük yazsın.
- Eğer sayı 10’dan büyükse Büyük yazsın.
Belirttiğimiz bu şartlarımıza göre, bize gereken kodlar bu şekilde olacaktır..
Sub Eger_Kosul_Yapısı_2() Dim i As Integer For i = 2 To Range("A65536").End(3).Row If Cells(i, "A") = 0 Then Cells(i, "B") = "Sıfır" ElseIf Cells(i, "A") = 10 Then Cells(i, "B") = "Eşit" ElseIf Cells(i, "A") < 10 Then Cells(i, "B") = "Küçük" ElseIf Cells(i, "A") > 10 Then Cells(i, "B") = "Büyük" End If Next i End Sub
Bu kodları da gif resim üzerinde nasıl çalıştığını görerek daha net anlayabilirsiniz.
ELSEIF ve ELSE BİRLİKTE
Son olarak kodlarımıza, eğer yukarıda belirttiğimiz şartların hiçbirine uymuyorsa, o zaman End If satırından önce Else değilse ifadesi dahil edilerek, bu şekilde hücreye başka bir sonuç da yazdırılabilir.
Sub Eger_Kosul_Yapısı_3() Dim i As Integer For i = 2 To Range("A65536").End(3).Row If Cells(i, "A") = 0 Then Cells(i, "B") = "Sıfır" ElseIf Cells(i, "A") = 10 Then Cells(i, "B") = "Eşit" ElseIf Cells(i, "A") < 10 Then Cells(i, "B") = "Küçük" Else Cells(i, "B") = "Büyük" End If Next i End Sub
Daha fazla detay için Visual Basic’te Koşul Yapılarını buradan inceleyebilirsiniz.
Diğer yazılarımızda görüşmek üzere, hoşça kalın. 🙋🏻♂️
Bu yazımızı çevrenizle paylaşarak birçok kişinin de bilgi sahibi olmasını sağlayabilirsiniz. 👍🏻