Mahmut Bayram
Özel Üye
- Katılım
- 25 Haziran 2005
- Mesajlar
- 1,778
- Excel Vers. ve Dili
- 2021 Excel Tr
If Fonksiyonu Ve Select Case
If fonksiyonu verilen şartı değerlendirir.
Şart sonucu Doğru çıkarsa komut işletilir.
Şartı ifade edebilmek için mantıksal operatorler kullanılır.
Bunun için öncelikle mantıksal ifadeleri öğrenmemiz gereklidir.
Mantıksal operatorler
= Eşittir
<> Eşit değildir
> Büyüktür
< Küçüktür
>= Büyük eşit
<= Küçük eşit
Aslında günlük hayatımızda da (IF) Eğer ifadeleri kullanılmaktadır.
Mesela:
gibi,
Formunuza bir buton ve bir de textbox ekleyin.
Butonun click olayınına aşağıdaki kodu yazın.
Bu örnekte eğer Textbox1’in içerisine Bitir yazılırsa butona tıklandığında
Application.Quit komutu Excel’i kapatmak isteyecektir.
Eğer Textbox1’in içerisine başka bir ifade yazılırsa herhangi bir komut çalışmayacaktır.
Peki diyelim ki bir şartımız var ve şart oluşunca bir işlem, oluşmayınca başka bir işlem yaptırmak istiyoruz. O zaman Else ifadesini kullanmalıyız.
Else:
Else ifadesi aksi taktirde şunu yap şeklinde bir ifadedir.
Kullanım şekli:
Mesela günlük hayatta,
Örnek-1: Formunuza bir buton ve bir de textbox ekleyin. Butonun click olayınına aşağıdaki kodu yazın.
Örnek-2: Workbook_BeforeClose olayına yazmalısınız.
Bu örnekte kullanıcı çalışma kitabını kapatmak isteyince bir seçim mesajı çıkıyor,
Eğer (ok seçilir) ise (dosyayı kaydet) aksi halde (işlemi iptal et.)
Birden fazla şart belirlenmek istenirse (And) ve (Or) mantıksal ifadeleri kullanılır.
And (ve) : Aynı anda birden çok şartın gerçekleşmesi durumunda komut işletilir.
Or (veya) :Birçok şarttan sadece biri doğruysa komut işletilir
Kullanışı:
If (Şart) And (Şart) And …[Çoğaltılabilir] Then [Komutlar]
'Bütün şartlar gerçekleşmeli…
If (Şart) Or (Şart) Or …[Çoğaltılabilir] Then [Komutlar]
Şartların sadece birinin gerçekleşmesi yeterli
And ve Or İkisi bir arada kullanılabilir.
Bunun İçin Parantez Kullanılmalıdır.
If ((Şart) and (Şart)) Or (Şart) Then [Komutlar]
Mantıksal örnekler:
Eğer (Ali Geldi) ve (Ayşe Geldi) ve (Mehmet Geldi) iseler (Ekip tamam demektir)
Eğer (Siz Üzgün) veya (Ben Üzgün) isek (Hepimiz Üzgünüz) Aksi Halde (Mutluyuz)
Eğer (Bugün Pazarsa) veya ((Haftaiçi) ve (Tatil)) ise (Ben Yatıyorum Demektir.)
Örnek: (And) Rakam girilmesin.
Nesnenin KeyPress olayına yazılmalıdır.
Örnek: (Or) Sadece Rakam girilsin.
Nesnenin KeyPress olayına yazılmalı
Eğer işletilmek istenen birden fazla komut var ise if komutu blok olarak da kullanılır. Bu durumda if bloğu end if komutuyla tamamlanmalıdır.
Örnek: Formunuza bir buton ve bir de textbox ekleyin.
Butonun click olayınına aşağıdaki kodu yazın.
if bloğunda Elseif ifadesi,
İlk şarttan sonra tekrar şart koşmak istenirse elseif kullanılır.
Örnek: Elseif
ElseIf ifadesiyle aynı zamanda birbirine kardeş if blokları oluşmuş oluyor.
Eğer blok yapmak istenmez ise [ ElseIf notu >= 45 Then durum = "Geçer" ] satırında olduğu dibi tek komut Then ifadesinden sonra kullanılır.
Kimi zaman If fonksiyonu kullanmak işi uzatabilir.
Örnek:
Butona her tıklamada Textbox1'i görünür ise görünmez,
Görünmez ise görünür yapmaya çalışalım
Burada her iki komut da işletileceği için sonuçta her zaman görünmez olacaktır.
İkinci satır her halde işletilecektir. Çünkü text kutusu eğer görünmez ise
Birinci if ile görünür yapılacak sonra ikinci if ile görünmez olacaktır.
Eğer kutu zaten görünürse direk ikinci if işletilip yine görünmez olacaktır.
Bunun çözümü işletilen iften sonra sona atlamaktır.
Aslında şartların sayısı artınca bu işimizi zorlaştıracaktır.
Bu tür seçimler için Select Case fonksiyonu daha kullanışlıdır.
Select Case:
Select Case , ve End select bloğu arasındaki case şartlarından doğru olan
ifade işletilir ve diğer şartlara bakılmadan direk sona gidilir.
Ayrıca aynı satırda birden fazla eşitlik veya büşüklük küçüklük gibi şartlar da olabilir.
Kullanılışı:
Yukarıdaki örneği bir de select case ifadesiyle yapalım:
Pri
Örnek : Haftanın gününü bulmak
Case ifadesiyle birlikte birden fazla ihtimal kullanılabildiği gibi,
Büyüklük küçüklük gibi mantıksal ifade de kullanılabilir.
Örnek:
If fonksiyonu verilen şartı değerlendirir.
Şart sonucu Doğru çıkarsa komut işletilir.
Kod:
if (şart) then (komut)
Bunun için öncelikle mantıksal ifadeleri öğrenmemiz gereklidir.
Mantıksal operatorler
= Eşittir
<> Eşit değildir
> Büyüktür
< Küçüktür
>= Büyük eşit
<= Küçük eşit
Kod:
If (şart) Then (komut)
Aslında günlük hayatımızda da (IF) Eğer ifadeleri kullanılmaktadır.
Mesela:
Kod:
Eğer (araba bozuldu) ise (tamir ettir)
gibi,
Formunuza bir buton ve bir de textbox ekleyin.
Butonun click olayınına aşağıdaki kodu yazın.
Kod:
Private Sub CommandButton1_Click()
'Eğer (Textbox1'in içindeki yazı Bitir 'e eşit) ise (Uygulamayı kapat)
If Textbox1.Text = "Bitir" Then Application.Quit
End Sub
Bu örnekte eğer Textbox1’in içerisine Bitir yazılırsa butona tıklandığında
Application.Quit komutu Excel’i kapatmak isteyecektir.
Eğer Textbox1’in içerisine başka bir ifade yazılırsa herhangi bir komut çalışmayacaktır.
Peki diyelim ki bir şartımız var ve şart oluşunca bir işlem, oluşmayınca başka bir işlem yaptırmak istiyoruz. O zaman Else ifadesini kullanmalıyız.
Else:
Else ifadesi aksi taktirde şunu yap şeklinde bir ifadedir.
Kullanım şekli:
Kod:
If (şart) Then (komut) Else (komut)
Mesela günlük hayatta,
Kod:
Eğer (gelen Ali) ise (içeri al) aksi takdirde (gönder gitsin)
Örnek-1: Formunuza bir buton ve bir de textbox ekleyin. Butonun click olayınına aşağıdaki kodu yazın.
Kod:
Private Sub CommandButton1_Click()
Durum = "" ' durum değişkeni boşaltılıyor
If Textbox1.Text > 0 Then Durum = "Sayı Pozitif" Else Durum = "Sayı Sıfır veya sıfırın altında"
MsgBox Durum ‘Bu satır If ifadesinden bağımsızdır. Durum değişkenini mesaj olarak gösterir.
End Sub
Örnek-2: Workbook_BeforeClose olayına yazmalısınız.
Bu örnekte kullanıcı çalışma kitabını kapatmak isteyince bir seçim mesajı çıkıyor,
Eğer (ok seçilir) ise (dosyayı kaydet) aksi halde (işlemi iptal et.)
Kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Dosyayı kaydetmelisiniz.", vbCritical + vbOKCancel, "Çıkış işlemi") = vbOK Then Save Else Cancel = True
End Sub
Birden fazla şart belirlenmek istenirse (And) ve (Or) mantıksal ifadeleri kullanılır.
And (ve) : Aynı anda birden çok şartın gerçekleşmesi durumunda komut işletilir.
Or (veya) :Birçok şarttan sadece biri doğruysa komut işletilir
Kullanışı:
If (Şart) And (Şart) And …[Çoğaltılabilir] Then [Komutlar]
'Bütün şartlar gerçekleşmeli…
If (Şart) Or (Şart) Or …[Çoğaltılabilir] Then [Komutlar]
Şartların sadece birinin gerçekleşmesi yeterli
And ve Or İkisi bir arada kullanılabilir.
Bunun İçin Parantez Kullanılmalıdır.
If ((Şart) and (Şart)) Or (Şart) Then [Komutlar]
Mantıksal örnekler:
Eğer (Ali Geldi) ve (Ayşe Geldi) ve (Mehmet Geldi) iseler (Ekip tamam demektir)
Eğer (Siz Üzgün) veya (Ben Üzgün) isek (Hepimiz Üzgünüz) Aksi Halde (Mutluyuz)
Eğer (Bugün Pazarsa) veya ((Haftaiçi) ve (Tatil)) ise (Ben Yatıyorum Demektir.)
Örnek: (And) Rakam girilmesin.
Nesnenin KeyPress olayına yazılmalıdır.
Kod:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii >= 48 And KeyAscii <= 57 Then KeyAscii = 0
'Eğer tuşun aski kodu 48 ile 57 arasındaysa yani rakamların aski kodu ise tuşu iptal et. Özel tuşlar için geçerli değildir. F1, Tab,..
End Sub
Örnek: (Or) Sadece Rakam girilsin.
Nesnenin KeyPress olayına yazılmalı
Kod:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
'Eğer tuşun aski kodu 48den küçükse veya 57 den büyükse yani rakamların aski kodu değilse tuşu iptal et. Özel tuşlar için geçerli değildir. F1, Tab,..gibi
End Sub
Eğer işletilmek istenen birden fazla komut var ise if komutu blok olarak da kullanılır. Bu durumda if bloğu end if komutuyla tamamlanmalıdır.
Kod:
If (şart) Then
..
Komutar
...
End If
Örnek: Formunuza bir buton ve bir de textbox ekleyin.
Butonun click olayınına aşağıdaki kodu yazın.
Kod:
Private Sub CommandButton1_Click()
If Textbox1.Text > 100 Then
aciklama = "a yüzden büyük"
MsgBox aciklama
'…
'Diğer Komutlar
End If
End Sub
if bloğunda Elseif ifadesi,
İlk şarttan sonra tekrar şart koşmak istenirse elseif kullanılır.
Örnek: Elseif
Kod:
Private Sub CommandButton1_Click()
notu = Val(TextBox1.Text)
If notu >= 85 Then '85 'ten büyük ve eşitse. [84'ten büyük ise]
durum = "Süper"
'...
ElseIf notu >= 75 Then 'Aksi halde ama 75'ten büyük eşitse. [75..84] arası
durum = "İyi"
'...
ElseIf notu >= 55 Then 'Aksi halde ama 55'ten büyük eşitse [55..74] arası
durum = "Orta"
'...
ElseIf notu >= 45 Then durum = "Geçer" 'Aksi halde ama 45'ten büyük eşitse [45..54] arası
Else: durum = "Çalış çalış" 'Diğer tüm durumlarda [45'ten küçük ise]
End If
MsgBox durum 'Bu komut iften bağımsız, İf bloğundan sonra gelmiş.
End Sub
ElseIf ifadesiyle aynı zamanda birbirine kardeş if blokları oluşmuş oluyor.
Eğer blok yapmak istenmez ise [ ElseIf notu >= 45 Then durum = "Geçer" ] satırında olduğu dibi tek komut Then ifadesinden sonra kullanılır.
Kimi zaman If fonksiyonu kullanmak işi uzatabilir.
Örnek:
Butona her tıklamada Textbox1'i görünür ise görünmez,
Görünmez ise görünür yapmaya çalışalım
Kod:
Private Sub CommandButton1_Click()
'Eğer text kutusu görünmez ise görünür yap
If TextBox1.Visible = False Then TextBox1.Visible = True
'Eğer text kutusu görünürse görünmez yap.
If TextBox1.Visible = True Then TextBox1.Visible = False
End Sub
Burada her iki komut da işletileceği için sonuçta her zaman görünmez olacaktır.
İkinci satır her halde işletilecektir. Çünkü text kutusu eğer görünmez ise
Birinci if ile görünür yapılacak sonra ikinci if ile görünmez olacaktır.
Eğer kutu zaten görünürse direk ikinci if işletilip yine görünmez olacaktır.
Bunun çözümü işletilen iften sonra sona atlamaktır.
Kod:
Private Sub CommandButton1_Click()
'Eğer text kutusu görünmez ise görünür yap
If TextBox1.Visible = False Then TextBox1.Visible = True: GoTo 10
'Eğer text kutusu görünürse görünmez yap.
If TextBox1.Visible = True Then TextBox1.Visible = False: GoTo 10
10:
End Sub
Aslında şartların sayısı artınca bu işimizi zorlaştıracaktır.
Bu tür seçimler için Select Case fonksiyonu daha kullanışlıdır.
Select Case:
Select Case , ve End select bloğu arasındaki case şartlarından doğru olan
ifade işletilir ve diğer şartlara bakılmadan direk sona gidilir.
Ayrıca aynı satırda birden fazla eşitlik veya büşüklük küçüklük gibi şartlar da olabilir.
Kullanılışı:
Kod:
Select Case (değişken)
Case (Değişken için bir değer): Komut
Case (Değişken için bir değer): Komut
Case (Değişken için bir değer)
'Komutlar
'..İstenirse bu şekilde blok olarak kullanılabilir.
Case (Değişken için bir değer): Komut
End Select
Yukarıdaki örneği bir de select case ifadesiyle yapalım:
Pri
Kod:
vate Sub CommandButton1_Click()
Select Case TextBox1.Visible
Case False: TextBox1.Visible = True
Case True: TextBox1.Visible = False
End Select
End Sub
Örnek : Haftanın gününü bulmak
Kod:
Private Sub CommandButton1_Click()
Select Case Weekday(Date, vbMonday)
'Weekday(Date, vbMonday) şu anki tarihin (Date) haftanın kaçıncı günü olduğunu verir.
'Çıkan sonuç kaç ise o satıra (Örn: Case 5) gidip komutu işletir.
Case 1: gun = "Pazartesi"
Case 2: gun = "Salı"
Case 3: gun = "Çarşamba"
Case 4: gun = "Perşembe"
Case 5: gun = "Cuma"
Case 6: gun = "Cumartesi"
Case 7: gun = "Pazar"
End Select
MsgBox gun
End Sub
Case ifadesiyle birlikte birden fazla ihtimal kullanılabildiği gibi,
Büyüklük küçüklük gibi mantıksal ifade de kullanılabilir.
Örnek:
Kod:
Private Sub CommandButton1_Click()
MsgBox Weekday(Date, vbMonday)
Select Case Weekday(Date, vbMonday)
Case 1: gun = "Bugün pazartesi, "
Case 2: gun = "Salı"
Case 3: gun = "Çarşamba "
Case 4, 5: gun = "Hafta içi son günler "
Case Is > 5: gun = "Hafta Sonu"
Case Else: gun="Böyle bir gün olamaz"
End Select
MsgBox gun
End Sub
Son düzenleme:
