IF-THEN-ELSE karar yapısı


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

Daha önce belirli bir şart sağlandığında bir işlemin yapılabilmesi için if..else yapısını ele almıştık. Şimdi ise bir şart sağlandığında bir işlem yapıldığı gibi bu şartın sağlanmaması durumunda da başka bir işlemin yapılabilmesi için if..else.then yapısını ele alacağız.

Ş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 ise İşlem-2 olarak verilen işlem yapılmaktadır.
IF şart THEN DOĞRU ise yapılacak işlem ELSE YANLIŞ ise yapılacak 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 doğru ise gerçekleştirilecek İŞLEMLER
ELSE
Şart yanlış ise gerçekleştirilecek İŞLEMLER
END IF seklinde yazılır. Burada IF..Else ..End if arasına istediğiniz kadar program satırı koyabilirsiniz.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Sayfa1 de tikladimiz hucre 5. ile 10. satır arasıda bir hücre ise içerisine 1-49
'arasinda rasgele bir aktarılıyor. Aksi durumda hücre içeriği boşaltılarak
'kullanıcıya 5-10. satırlar arasındaki hucrelere veri girişi yapılabilir mesajı veriliyor.

If ActiveCell.Row >= 5 And ActiveCell.Row <= 10 Then
ActiveCell.Value = CInt(Rnd * 49 + 1)
Else
MsgBox "5-10. satirlar arasındaki hücrelere veri girişi yapabilirsiniz", vbOKOnly + vbCritical, "Dikkat"
ActiveCell.Value = ""
End If
End Sub

Private Sub btnSaveAndExit_Click()
'name ozelliği btnSaveAndExit 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.
'aksi durumda ise Excel dosyası kaydedilmeden kapatılıyor.

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

Private Sub btnKontrol_Click()
'Sayfa1 A1 hücresine tarih girilmisse B1 hücresinde yeşil renkte Geçerli tarih bilgisi mesajı.
'aksi durumda kirmizi renkte Geçersiz tarih bilgisi mesajı görüntülenecektir.

If IsDate(Sayfa1.Cells(1, 1)) Then
Sayfa1.Cells(1, 2).Font.Color = RGB(0, 255, 0) 'yesil
Sayfa1.Cells(1, 2) = "Geçerli tarih bilgisi"
Else
Sayfa1.Cells(1, 2).Font.Color = RGB(255, 0, 0) 'kirmizi
Sayfa1.Cells(1, 2) = "Geçersiz tarih bilgisi"
End If
End Sub

Private Sub CommandButton1_Click()
'Sayfa1 D5 hücresindeki sayı çift ise Girdiğiniz sayı bir çift sayıdır,
tek ise Girdiğiniz sayı bir tek sayıdır mesajı görüntülenmektedir.

If (Sayfa1.Cells(5, 4) Mod 2) = 0 Then
MsgBox "Girdiğiniz sayi bir ÇİFT sayıdır", vbInformation + vbOKOnly, "Bilgi"
Else
MsgBox "Girdiğiniz sayi bir TEK sayıdır", vbInformation + vbOKOnly, "Bilgi"
End If
End Sub

Private Sub btnVeriAktar_Click()
'Sayfa2 A sütununda A1 den başlayarak içeriği boş olan ilke hücreye kadar
'tüm hücrelerin verileri Sayfa1 A sütununa kopyalanmaktadır.
'DO..LOOP WHILE yapısı ilerleyen konularda ele alınacaktır.

Dim satir As Integer
satir = 1
Do
Sayfa1.Cells(satir, 1) = Sayfa2.Cells(satir, 1)
satir = satir + 1
Loop While Sayfa2.Cells(satir, 1) <> ""
End Sub

Private Sub btnKontrol_Click()
'Sayfa1 A1-A5 arasındaki hücrelerin içerikleri kontrol ediliyo
' şayet hücreler bilgi içeriyorlarsa aynı satırdaki B sütunundaki hücrelere DOLU içermiyorsa BOŞ
'bilgisi aktarılıyor.
'BU KOMİK BİR KOD SADECE BİR ÖRNEK :) İLERİDE BU TÜR İŞLEMLER İÇİN DÖNGÜLERİ KULLANACAĞIZ.

If Sayfa1.Cells(1, 1) = "" Then Sayfa1.Cells(1, 2) = "BOŞ" Else Sayfa1.Cells(1, 2) = "DOLU"
If Sayfa1.Cells(2, 1) = "" Then Sayfa1.Cells(2, 2) = "BOŞ" Else Sayfa1.Cells(2, 2) = "DOLU"
If Sayfa1.Cells(3, 1) = "" Then Sayfa1.Cells(3, 2) = "BOŞ" Else Sayfa1.Cells(3, 2) = "DOLU"
If Sayfa1.Cells(4, 1) = "" Then Sayfa1.Cells(4, 2) = "BOŞ" Else Sayfa1.Cells(4, 2) = "DOLU"
If Sayfa1.Cells(5, 1) = "" Then Sayfa1.Cells(5, 2) = "BOŞ" Else Sayfa1.Cells(5, 2) = "DOLU"
End Sub

OR OPERATÖRÜ VE IF-ELSE YAPISINA GENEL BAKIŞ
Private Sub CommandButton2_Click()
If Sayfa1.Cells(10, 5) < 0 OR Sayfa1.Cells(10, 5) > 1000 Then
     Sayfa1.Cells(10, 6) = "GEÇERSİZ"
Else
     Sayfa1.Cells(10, 6) = "GEÇERLİ"
End If
End Sub
Şimdi bunu aynı sonucu üretecek şekilde ancak OR operatörünü kullanmadan yeniden yazalım
Private Sub CommandButton2_Click()
If Sayfa1.Cells(10, 5) < 0 Then
     Sayfa1.Cells(10, 6) = "GEÇERSİZ"
Else
     If Sayfa1.Cells(10, 5) >1000 Then
          Sayfa1.Cells(10, 6) = "GEÇERSİZ"
     Else
          Sayfa1.Cells(10, 6) = "GEÇERLİ"
     End If
End If
End Sub

Yardımcı olması dileğiyle