Excel VBA üzerindeki Select Case yapısı ile ilgili bir bilgi derlemesidir.
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