SELECT CASE KARAR YAPISI

Bu yazımızda Excel & VBA yani herkesin bildiği adıyla Excel makrolarındaki Karar (Koşul) Yapılarından biri olan Select Case Karar Yapısı ile ilgili de bilgiler vereyim istedim. Excel & VBA ile ilgili diğer yazılarımızı da yine blog sayfamızda bulabilirsiniz.

 

SELECT CASE KARAR YAPISI NEDİR?

Select Case Karar YapısıIF yapısı gibi, bir veri ile ilgili karşılaştırma kontrolü için kullanılabilir.
Döndürdüğü değerler True ya da False olacaktır. True Doğru olduğunda altındaki kod satırları çalışır, False Yanlış olduğunda varsa diğer Case şartlarına kontrole gidilir.
Başka Case şartları varsa ve o Case şartları True oluyorsa onun alt satırlarındaki kodlar uygulanır..
Başka Case şartları yoksa, ya da kontrole gidilen diğer Case şartları hep False yanıtı döndürdü ise, End Select ile blok dışına çıkarak varsa prosedürdeki diğer satırlardaki kodlar uygulanır. Bu da yok ise prosedürden çıkılır.

Eğer (IF Else ElseIf Then) kullanımının benzeri gibi olsa da biraz daha farklı bir türüdür ve birden fazla şartınız var ise IF‘e göre kullanımı çok daha kolay olabilir.

 

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.
Yeşil renkli kısımlar yorum satırıdır.

Select Case Kontrol Edilecek Veri
‘Kodlarınız
End Select

Birden fazla koşulumuz olacaksa o zaman devreye Case Is veya Case ifadesi girer, ayrıca kontrol ettirilen veri belirtilen koşullar dışındaysa şunu yap diyebildiğimiz bir de Case Else ifademiz vardır. Bu ifadelerin de kalıbı bu şekildedir.

Select Case Kontrol Edilecek Veri
Case Is Koşul
‘Kodlarınız
Case Is Koşul
‘Kodlarınız
Case Is Koşul
‘Kodlarınız
Case Else
‘Kodlarınız
End Select

İstenirse Koşul kısmından sonra : (iki nokta üst üste) ile kodlar bu şekilde aynı satırda yazılabilir. Case Is Koşul: Kodlarınız
Eğer koşul belirtirken bir karşılaştırma operatörü (<; <=; =; >; >=) kullanıyorsak, koşul için Case Is ifadesi yazılır, kullanmıyorsak Case ifadesi yeterli olacaktır. Aşağıdaki örneklerde bu durumu göreceksiniz.

Select Case yapısı için yukarıda şu ifadeyi kullandık; “birden fazla şartınız var ise IF‘e göre kullanımı çok daha kolay olabilir.”
Şimdi bununla ilgili bir örnek verelim, aynı koşulları hem IF yapısı ile hem de Select Case yapısı ile uygulayalım ve aradaki farkı görelim.
Koşullarımız şöyle olacak; bir değerimiz var ve bu değeri kontrol ettireceğiz, eğer bu değer 1’den küçükse bir MsgBox ile sonuç döndüreceğiz, aynı şekilde 1 ile 5 arasındaysa, ya da 6 ile 10 arasındaysa ya da 11 ile 15 arasındaysa bir MsgBox ile sonuç döndüreceğiz. Bunu da her iki yapı ile ayrı ayrı hazırlayacağız..

Evet başlayalım. İlk önce IF yapısı ile yukarıdaki şartlara göre kodlarımızı yazarsak bize gerekecek kodlar bunlar olacaktır;

Sub IF_Yapisi_ile_1()
For i = 1 To 10
If Cells(i, 1).Value < 1 Then
MsgBox "Değer 1'den küçüktür."
ElseIf Cells(i, 1).Value >= 1 And Cells(i, 1).Value <= 5 Then
MsgBox "Değer 1 ile 5 arasındadır."
ElseIf Cells(i, 1).Value >= 6 And Cells(i, 1).Value <= 10 Then
MsgBox "Değer 6 ile 10 arasındadır."
ElseIf Cells(i, 1).Value >= 11 And Cells(i, 1).Value <= 15 Then
MsgBox "Değer 11 ile 15 arasındadır."
End If
Next i
End Sub

 

Kodlarımızı her şartı ayrı IF satırında yazmak ve sade hâle getirmek istersek o zaman bu şekilde de yazabiliriz;

Sub IF_Yapisi_ile_2()
For i = 1 To 10
If Cells(i, 1).Value < 1 Then MsgBox "Değer 1'den küçüktür."
If Cells(i, 1).Value >= 1 And Cells(i, 1).Value <= 5 Then MsgBox "Değer 1 ile 5 arasındadır."
If Cells(i, 1).Value >= 6 And Cells(i, 1).Value <= 10 Then MsgBox "Değer 6 ile 10 arasındadır."
If Cells(i, 1).Value >= 11 And Cells(i, 1).Value <= 15 Then MsgBox "Değer 11 ile 15 arasındadır."
Next i
End Sub

 

Bir de aynı koşulları Select Case ifadesiyle nasıl yazarız onu görelim..

Sub Select_Case_Yapisi_ile()
For i = 1 To 10
Select Case Cells(i, 1).Value
Case Is < 1: MsgBox "Değer 1'den küçüktür."
Case 1 To 5: MsgBox "Değer 1 ile 5 arasındadır."
Case 6 To 10: MsgBox "Değer 6 ile 10 arasındadır."
Case 11 To 15: MsgBox "Değer 11 ile 15 arasındadır."
Case Else: MsgBox "Değer 15'den daha büyüktür."
End Select
Next i
End Sub

 

Üç farklı kod ile istediğimiz işlemi yapabildiğimizi gördük bu sayıyı artırabilir de fakat aradaki farkı görebildiğinizi umuyorum.
IF yapısı ile, her seferinde kontrol ettireceğimiz hücre adresini Cells(i, 1).Value belirtmek zorunda kaldık ve aynı ifadeyi, iki sayı arasında şartını belirtmek için defalarca yazdık. Fakat Select Case ‘de kontrol edeceği hücre adresini bir kere yazmamız yeterli olmakla beraber iki sayı arasında şartını belirtmek için 1 To 5 şeklinde kolayca ifade edebiliyoruz.

Select Case yapısı ile sonucu bir gif resimde görelim..

select case karar yapısı vba

 

KOD ÖRNEKLERİ

Aşağıdaki Select Case kullanımı ile ilgili örnekleri uygulayarak nasıl çalıştığını kendiniz test edebilir ve mantığını daha iyi kavrayabilirsiniz.

Sub Makro1()
Select Case "Murat" = "Emre"
Case True: MsgBox "İfade Doğrudur."
Case False: MsgBox "İfade Yanlıştır."
End Select
End Sub

 

Sub Makro2()
Dim Değer As Integer
Değer = 2
Select Case Değer
Case 1: MsgBox "Değer 1'dir."
Case 2: MsgBox "Değer 2'dir."
Case 3: MsgBox "Değer 3'tür."
Case Else: MsgBox "Değer Mevcut Değil."
End Select
End Sub

 

Sub Makro3()
Dim Değer As Integer
Değer = 1
Select Case Değer
Case Is < 1: MsgBox "Değer Küçüktür."
Case Is = 1: MsgBox "Değer Eşittir."
Case Is > 1: MsgBox "Değer Büyüktür."
End Select
End Sub

 

Sub Makro4()
Dim Metin As String
Metin = "PEAKUP"
Select Case Metin
Case "Excel": MsgBox "Metin Excel'dir"
Case "PEAKUP": MsgBox "Metin PEAKUP'tır."
Case "VBA": MsgBox "Metin VBA'dır."
End Select
End Sub

 

Sub Makro5()
Dim Değer As Integer
Değer = 14
Select Case Değer
Case Is < 1: MsgBox "Değer 1'den küçüktür."
Case 1, 2, 3, 4, 5: MsgBox "Değer 1 ile 5 arasındadır."
Case 6, 7, 8, 9, 10: MsgBox "Değer 6 ile 10 arasındadır."
Case 11, 12, 13, 14, 15: MsgBox "Değer 11 ile 15 arasındadır."
Case Else: MsgBox "Değer 15'den daha büyüktür."
End Select
End Sub

 

Sub Makro6()
Dim Değer As Integer
Değer = 20
Select Case Değer
Case Is < 1: MsgBox "Değer 1'den küçüktür."
Case 1 To 9: MsgBox "Değer 1 ile 9 arasındadır."
Case 10 To 19: MsgBox "Değer 10 ile 19 arasındadır."
Case 20 To 29: MsgBox "Değer 20 ile 29 arasındadır."
Case Else: MsgBox "Değer 29'dan büyüktür."
End Select
End Sub

 

Sub Makro7()
Dim Değer As Long
Değer = 15
Select Case Değer
Case Is < 1: MsgBox "Değer 1'den küçüktür."
Case 1 To 4, 5 To 9: MsgBox "Değer 1 ile 9 arasındadır."
Case 10 To 14, 15 To 19: MsgBox "Değer 10 ile 19 arasındadır."
Case 20 To 24, 25 To 29: MsgBox "Değer 20 ile 29 arasındadır."
Case Else: MsgBox "Değer 29'dan büyüktür."
End Select
End Sub

 

Sub Makro8()
Dim Tanım As String
Tanım = "C"
Select Case Tanım
Case Is < "E": MsgBox Tanım & " harfi E harfinden önce gelir."
Case Is > "E": MsgBox Tanım & " harfi E harfinden sonra gelir."
End Select
End Sub

 

Sub Makro9()
Dim Tanım As String
Tanım = "E"
Select Case Tanım
Case "A" To "M": MsgBox Tanım & " harfi A ile M harfleri arasındadır."
Case "N" To "Z": MsgBox Tanım & " harfi N ile Z harfleri arasındadır"
Case Else: MsgBox "Case Else"
End Select
End Sub

 

Microsoft Docs’ta Select Case deyimi ile ilgili daha detaylı bilgiye de erişebilirsiniz.

 

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. 👍🏻

office_imza_son

Start typing and press Enter to search

rasgdizi fonksiyonuif karar yapısı
X