Select Case Kullanımı - Microsoft Excel


Excel VBA üzerindeki Select Case yapısı ile ilgili bir bilgi derlemesidir.

Bilgi

Select Case nedir, ne işe yarar?

Select Case komutu if fonksiyonu gibi çalışan bir koddur. Yani select case ile yapılabilen her şeyi if ile de yapabiliriz. Fakat bazen öyle koşul yapıları karşımıza çıkar ki bunları if yapısı ile altından kalkmak zahmetli olur. Mesela bir değişkenin 10 değişik duruma göre değişik işlemler yapacak bir kod yazmaya çalışyıyoruz. Bunu if else ile yazmak yerine select case ile yazmak daha kolay olacaktır.


Select Case Genel Kullanımı


Option Explicit

Sub SelectCaseGenelKullanim()
    Select Case degisken
        Case deger_1
            '--------------------------------------------------
            'deger1 degisken'e eşit bir değer,
            'degisken'in içinde olduğu bir
            'aralık vs. olabilir.
            '--------------------------------------------------
        Case deger_2
            '--------------------------------------------------
            'deger1 koşulu sağlanmazsa deger_2 koşuluna bakar.
            '...
            '...
            '...
            '--------------------------------------------------
        Case deger_n
            '--------------------------------------------------
            'deger_n-1 koşulu sağlanmazsa
            'deger_n koşuluna bakar.
            '--------------------------------------------------
        Case Else
            '--------------------------------------------------
            'Yukarıdaki hiç bir koşul sağlanmazsa
            'bu aralıktaki kodlar çalışır.
            '--------------------------------------------------
    End Select
End Sub


Değişken Bir Değere Eşit Olduğunda İşlem Yaptır

Aşağıdaki VBA kodları metin değişkeni a, b veya c değerine eşit olursa her biri için farklı sonuç üretecektir.


Option Explicit

Sub SelectCaseBirDegereEsitOldugundaIslemYaptir()
    Dim metin As String
    
    metin = _
        InputBox( _
            "Aşağıdaki harflerden birini yazın." & _
            vbCrLf & _
            vbCrLf & "a-b-c")
    
    Select Case metin
        Case "a"
            MsgBox "a harfini seçtiniz."
        Case "b"
            MsgBox "b harfini seçtiniz."
        Case "c"
            MsgBox "c harfini seçtiniz."
    End Select
End Sub


Değişken Bazı Değerlere Eşit Olduğunda İşlem Yaptır

Aşağıdaki VBA kodlarında,
değişken a veya b’ye eşit ise ona göre sonuç üretir,
değişken c, d ya da e’ye eşit ise ona göre sonuç üretir,
değişken k, l ya da m’ye eşit ise ona göre sonuç üretir.


Option Explicit

Sub SelectCaseDegiskenBaziDegerlereEsitOldugundaIslemYaptir()
    Dim metin As String
    
    metin = _
        InputBox( _
            "Aşağıdaki üç gruptaki harflerden birini yazın." & _
            vbCrLf & _
            vbCrLf & "a-b, c-d-e, k-l-m")
    
    Select Case metin
        Case "a", "b"
            MsgBox "Birinci gruptan bir harf seçtiniz."
        Case "c", "d", "e"
            MsgBox "İkinci gruptan bir harf seçtiniz."
        Case "k", "l", "m"
            MsgBox "Üçüncü gruptan bir harf seçtiniz."
    End Select
End Sub


Değişkenin Değeri Belli Bir Aralıkta Olduğunda İşlem Yaptır

Aşağıdaki VBA kodlarında,
değişken değeri 1-10 arasındaysa farklı sonuç üretir,
değişken değeri 11-20 arasındaysa farklı sonuç üretir,
değişken değeri 21-30 arasındaysa farklı sonuç üretir.


Option Explicit

Sub SelectCaseDegiskeninDegeriBelliBirAraliktaOldugundaIslemYaptir()
    Dim sayi As Integer
    
    sayi = InputBox("1-30 arasında bir sayı girin: ")
    
    Select Case sayi
        Case 1 To 10
            MsgBox "Girdiğiniz sayı 1 ile 10 arasındadır."
        Case 11 To 20
            MsgBox "Girdiğiniz sayı 11 ile 20 arasındadır."
        Case 21 To 30
            MsgBox "Girdiğiniz sayı 21 ile 30 arasındadır."
    End Select
End Sub


Değişkenin Değeri Belli Bir Değerden Büyük Olduğunda İşlem Yaptır

Aşağıdaki VBA kodları çalıştırıldığında girdiğiniz sayının bir, iki, üç veya daha fazla basamağa sahip olduğunu gösterir.


Option Explicit

Sub SelectCaseDegiskeninDegeriBelliBirDegerdenBuyukOldugundaIslemYaptir()
    Dim sayi As Integer
    
    sayi = InputBox("Bir sayı giriniz: ")
    
    Select Case sayi
        Case Is > 100
            MsgBox "Sayı üç basamaklıdır."
        Case Is > 10:
            MsgBox "Sayı iki basamaklıdır."
        Case Is > 0:
            MsgBox "Sayı bir basamaklıdır."
        Case Else
            MsgBox "Sayı üçten fazla basamağa sahiptir."
    End Select
End Sub

Yararlanılan Kaynaklar
Etiketler
microsoft excel microsoft excel vba