Mantık Operatörleri


Mantık operatörlerin incelenmesi

Mantık operatörlerin programlama dillerinde karar yapılarında kullanılan operatörlerdir. Ufak tefek değişiklik gösterselerde bir çok programlama dilinde aşağı yukarı aynı işlevi yerine getirirler. VBA (Visual Basic for Application) script dilinde yer alan mantık operatörleri aşağıdaki tabloda özet olarak ele alınmıştır. Bu tabloda 0 yanlış (False) ve 1 doğru (True) değerini temsil etmektedir.

Mantık İşlemi 1. parametre 2. parametre Sonuç VBA Operatörü Açıklama
VE 0 0 0 AND Şartların her ikisi de doğru olduğunda doğru sonucunu üretir.
0 1 0
1 0 0
1 1 1
VEYA 0 0 0 OR Şartlardan herhangi biri doğru olduğunda doğru sonucunu üretir.
0 1 1
1 0 1
1 1 1
EŞİTLİK 0 0 1 EQV Şartlar aynı olduğunda (her ikisi de doğru ya da her ikisi de yanlış) doğru değerini üretir. XOR operatörünün tersleyini gibidir.
0 1 0
1 0 0
1 1 1
ÖZEL VEYA 0 0 0 XOR Şartlar farklı olduğunda (biri doğru iken diğeri yanlış ise) doğru değerini üretir. EQV operatörünün tersleyini gibidir.
0 1 1
1 0 1
1 1 0
DEĞİL 0 1 NOT Sonuç her zaman değerlendirilen kriterin tersidir. Kriter doğru ise sonuç yanlış, kriter yanlış ise sonuç doğrudur.
1 0

Yukarıda verilen işlemleri basit örnekler ile daha iyi kavrayalım.

1.) Aktif çalışma sayfasında tıklanan hücre A1-A20 arasında ise bu hücreye 1-100 arasında rastgele bir sayı aktarılsın
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 1 Then
if And ActiveCell.Row >=1 and And ActiveCell.Row <21 Then
ActiveCell.Value = Int(100 * Rnd + 1)
End If
End If
End Sub

2.) Aktif çalışma sayfasında B10 hücresine sayı girilmişse ve bu sayı:
0-800 arasında ise C10 hücresine"ASGARI",
801-2000 arasında ise "ORTA" ve
2000 in üzerinde bir değer girilmişse "YÜKSEK"
bunların dışındaki her değer için "GEÇERSİZ" değeri aktarılsın.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsNumeric(ActiveSheet.Range("B10")) Then
If ActiveSheet.Range("B10") > 0 And ActiveSheet.Range("B10") <= 800 Then
ActiveSheet.Range("C10") = "ASGARI"
ElseIf ActiveSheet.Range("B10") > 800 And ActiveSheet.Range("B10") <= 2000 Then
ActiveSheet.Range("C10") = "ORTA"
ElseIf ActiveSheet.Range("B10") > 2000 Then
ActiveSheet.Range("C10") = "YUKSEK"
Else
ActiveSheet.Range("C10") = "GEÇERSİZ"
End If
End If
End Sub

3.) Aktif çalışma sayfasında tıklanan sütun A ya da C ise sütunun tamamı seçilsin
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 1 Or ActiveCell.Column = 3 Then
ActiveSheet.Columns(ActiveCell.Column).Select
End If
End Sub

4.) Aktif çalışma sayfasında A1 hücresinde hiç bir şey yok ise ya da 0 değeri girilmişse B1 hücresinde "GEÇERSİZ DEĞER" bilgisi görüntülensin aksi durumda B1 hücresinde hiç bir şey görüntülenmesin
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.Cells(1, 1) = "" Or ActiveSheet.Cells(1, 1) = 0 Then
ActiveSheet.Cells(1, 2) = "GEÇERSİZ DEĞER"
Else
ActiveSheet.Cells(1, 2) = ""
End If
End Sub

5.) Aktif çalışma sayfasında A1 hücresinde tarih bilgisi yok ise B1 hücresinde "GEÇERSİZ TARİH" bilgisi görüntülensin aksi durumda B1 hücresinde hiç bir şey görüntülenmesin.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not IsDate(ActiveSheet.Cells(1, 1)) Then
ActiveSheet.Cells(1, 2) = "GEÇERSİZ TARİH"
Else
ActiveSheet.Cells(1, 2) = ""
End If
End Sub

Not: Burada verilen operatörlerin anlaşılabilmesi için IF-ELSE şart yapıları hakkında az da olsa malumat sahibi olmak gerekir. Bu nedenle Karar yapılarını yazmışşam sitemde yer alan karar yapıları makale ya da makalelerini okuyunuz olmadı ben yazana kadar biraz sabrediniz. Üzülmeyin yavaş yavaş her şeyi ele alacağız.

Yardımcı olması dileğiyle