IF-THEN karar yapısı


IF ... THEN şart yapısının incelenmesi

Şart yapıları programlama dillerinin olmazsa olmaz yapılarıdır. Bu yapılar sayesinde programcı program akışını yönlendirmektedir. Oldukça basit tanımları olan bu yapılar sayesinde; bizler doğru bir şekilde kullandığımızda daha modüler kod blokları oluşturabilirken, yapacağımız mantık ya da yazım hataları ile de beklenmedik sonuçlar alabiliriz. Burada dikkat edilmesi gereken iki önemli nokta vardır:
1) Öncelikle kullanacağımız şart cümlesinin mantığının ve yazım şeklinin doğru olması,
2) Şart bloklarını yazarken bir şair edası ile değilde her açtığımız bloğu kapatarak yazdığımızdan emin olmamızdır. Şimdi isterseniz ilk temel şart yapımız olan if (eğer) yapısına kısaca bir gözatalım.

Şekil-1 Şekil-1 de de verildiği üzere program akışında verilen şart cümlesi doğru ise İşlem-1 olarak belirtilen işlem yapılmakta aksi durumda program bu yapıyı atlayarak işlemeye devam etmektedir. Özetle;
IF şart THEN Şart sağlandığında gerçekleştirilecek işlem
şeklide ifade edebileceğimiz bu yapı bir şarta bağlı olarak birden fazla program satırı işletilmek istendiğinde
IF şart THEN
Şart sağlandığında gerçekleştirilecek İŞLEMLER
END IF seklinde yazılır. Burada Then..end if arasına istediğiniz kadar program satırı koyabilirsiniz.

Şimdi buraya kadar kabaca ele aldığımız bu yapıya dair bir kaç basit kod örneği verelim örneklerimizde temel giriş çıkış komutlarından msgbox ve inputbox bulunmaktadır. Bu komutları daha sonra teferruatları ile anlatacağım ancak şimdilik msgbox ile kullanıcıya bilgi verme inputbox ile de kullanıcıdan bilgi aldığımızı bilseniz yeterli olacaktır. Ayrıca Sayfa1 deki B5 hücresi Sayfa1.Cell(5,2) şeklinde ifade edilir ki burada 5 satir numarasi 2 sütun numarasıdır.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'tikladimiz hucre boş ise kullanıcıya bilgilendirme mesaji görüntüleniyor.
If ActiveCell.Value = "" Then
MsgBox "Seçtiğiniz hücre veri içermiyor", vbInformation + vbOKOnly, "Bilgi"
End If
End Sub

Private Sub btnExit_Click()
'name ozelliği btnExit olan çıkış düğmesi tıklandığında kullanıcıdan çıkış yapmak isteyip
'istemediği soruluyor. Evet düğmesine basarsa Excel dosyası kaydedilerek Excel kapatılıyor.

Dim cevap As VbMsgBoxResult
cevap = MsgBox("Uygulmayı kapatmak istediğinize emin misiniz", vbInformation + vbYesNo, "Dikkat")
If cevap = vbYes Then
ThisWorkbook.Save
Application.Quit
End If
End Sub

Private Sub btnSayimi_Click()
'Sayfa1 J10 hücresine sayi girilmisse Sayi girişi yapıldı mesajı görüntüleniyor.
If isNumeric(Sayfa1.Cells(10, 10)) Then
msgbox "Sayi girişi yapıldı "
End If
End Sub

Private Sub CommandButton1_Click()
'Sayfa1 A1 hücresindeki sayı sıfırdan küçük ya da 100 den büyükse B1
'hücresinde "Geçersiz kayit bilgisi" görüntüleniyor.

If Sayfa1.Cells(1, 1) <= 0 Or Sayfa1.Cells(1, 1) > 100 Then
Sayfa1.Cells(1, 2) = "Geçersiz katsayı girişi"
End If
End Sub

Private Sub CommandButton2_Click()
'Sayfa1 E10 hücresindeki sayı[1000..3000] kapalı aralığında ise F10 hücresinde
'GEÇERLİ bilgisi görüntülenecektir.

If Sayfa1.Cells(10, 5) >= 1000 And Sayfa1.Cells(10, 5) <= 3000 Then
Sayfa1.Cells(10, 6) = "GEÇERLİ"
End If
End Sub

Yukarıda verdiğimiz kod örneğini AND (VE) operatörünü kullanmadan aşağıdaki gibi de yazabilirsiniz.
Private Sub CommandButton2_Click()
If Sayfa1.Cells(10, 5) >= 1000 Then
if Sayfa1.Cells(10, 5) <= 3000 Then
Sayfa1.Cells(10, 6) = "GEÇERLİ"
End If
End If
End Sub

Dikkat : IF-THEN yapısı içerisinde AND mantıksal operatörü kullanılmayacaksa aşağıda verildiği gibi yazılacak şart adedi kadar iç içe IF-THEN yapısı kullanılmalıdır.
'AND OPERATÖRÜ KULLANILARAK YAZILAN BİR ŞART YAPISI
if şart1 And şart3 and şart3 ...then
end if
'AND OPERATÖRÜ KULLANILMADAN YAZILAN AYNI ŞART YAPISI
if şart1 then
if şart2 then
if şart3 then
....
end if
end if
end if

Yardımcı olması dileğiyle