
Excel VBA Case Statement nedir?
VBA Case ifadesi mantıksal testlere dayalı sonuçlar türetmek için kullanılır. VBA Case ifadesi bir ifadenin sonucunu birden fazla Case ifadesiyle karşılaştırmak için kullanılır. Bir eşleşme bulunursa, koşul doğru kalır. Case ifadesi mantıksal testin sonucu olarak TRUE veya FALSE döndürür.
Örneğin, çalışma sayfamızda iki sayı var. A1 hücresindeki değerin A2 hücresindekinden büyük olup olmadığını test etmeliyiz. Sonucu test etmek için VBA Case ifadesini uygulayabiliriz.

A1 hücresindeki değerin A2 hücresindeki değerden büyük olup olmadığını kontrol etmek için aşağıdaki Case ifadesi kodunu kullanabiliriz.
Sub Case_Intro()
Dim Value1 As Integer
Dim Value2 As Integer
Value1 = Range(“A1”).Value
Value2 = Range(“A2”).Value
Select Case Value1
Case Is > Value2
MsgBox “Yes Cell A1 value is greater than Cell A2”
Case Else
MsgBox “Yes Cell A1 value is less than Cell A2”
End Select
End Sub
Yukarıdaki case ifadesi mesaj kutusunda aşağıdaki sonucu döndürecektir.

Önemli Noktalar
- VBA'nın Case ifadesi, herhangi bir koşulun verilen değer/ifade ile eşleşmesinden sonra, koşulları uygulamak ve sonuca ulaşmak için kullanılır.
- Case ifadesi VBA'daki IF ifadesine bir alternatif olabilir.
- Bir sayı aralığını test etmek için karşılaştırma operatörleri yerine "Kime" kelimesini kullanabiliriz.
- Teste birden fazla değer uygularken, bunları virgülle (,) ayırarak tek bir satıra girebiliriz.
- Case Bildirimi büyük/küçük harfe duyarlıdır.
VBA Case İfadesinin Sözdizimi
Aşağıda VBA'da Case ifadesinin sözdizimi yer almaktadır.

Test İfadesi: Bu, sonraki adımlarda farklı durumlara karşı test edeceğimiz ifade/değerdir.
Value1, Value2, Value3…. Bu, Test İfadesinin değerlendirildiği koşuldur. Doğru olduğunda, karşılık gelen kod yürütülür.
Tüm case ifadelerinden sonra case ifadesini sonlandırmak için “End Select” anahtar kelimesini kullanmalıyız.
Özel Not: Çeşitli koşulları test etmek için birden fazla VBA Case ifadesi oluşturduğumuzda, bir koşul karşılanır karşılanmaz VBA Select Case ifadesinden çıkar. Örneğin, altı testimiz olduğunu varsayalım. Excel'de mantıksal testi yaparken , VBA üçüncü durumdaki kodu çalıştırdıktan sonra üçüncü durumdaki koşul karşılanırsa Select Case ifadesinden çıkar. Üçüncü koşuldan sonraki kalan testler test edilmeyecektir.
Excel VBA Case İfadesi Nasıl Kullanılır?
İşte VBA'da Select Case ifadesini uygulamaya yönelik adım adım bir yaklaşım. Öncelikle aşağıda listelenen adımları izleyin.
Örneğin Excel'deki aşağıdaki verileri ele alalım.

Test etmemiz gereken senaryo şu şekildedir.
Exam1 değeri (hücre A2) Exam2 değerinden (hücre B2) büyükse, C2 hücresindeki sonuç “Derece A” olmalıdır; aksi takdirde “Derece B” olmalıdır.
Adım 1: Makroyu Visual Basic Düzenleyicisi penceresinde adlandırarak alt prosedürü başlatın.

Adım 2: Select Case ifadesini açın.

Adım 3: Burada, A2 hücresindeki değeri test etmeliyiz; dolayısıyla, RANGE nesnesini kullanarak A2 hücresindeki değeri sağlayın.

Adım 4: Select Case ifadesinde test edilecek değer verildikten sonra, VBA Case ifadesine erişmeli ve koşulları eklemeliyiz. Yani, bunları > Cell B2 değeri olarak uygulamalıyız.

A2 Aralığı değerinin B2 Aralığı değerinden büyük olup olmadığını test edecektir.
Adım 5: Eğer daha büyükse C2 hücresine “A Sınıfı” yazmalıyız, bu yüzden bu kodu girelim.

Adım 6: Mantıksal test yanlışsa, yani Aralık A2 değeri B2 değerinden büyük değilse, C2 hücresinde “Sınıf B” almalıyız. Kontrol edilecek yalnızca bir mantıksal test olduğundan, Case Else ifadesini aşağıdaki gibi girebiliriz.

Adım 7: “End Select” ifadesini kullanarak Case ifadesini kapatın - son hali şu şekilde görünür.
Sub Result_Case()
Select Case Range(“A2”).Value
Case Is > Range(“B2”).Value
Range(“C2”).Value = “Grade A”
Case Else
Range(“C2”).Value = “Grade B”
End Select
End Sub
Adım 8: Kodu çalıştırmak için F5 tuşuna basın veya “Çalıştır” butonuna tıklayın.

C2 hücresinde aşağıdaki sonucu elde ederiz.

C2 hücresindeki sonuç “Sınıf B”dir çünkü test edilen koşul, yani Aralık A2 değeri Aralık B2 değerinden büyüktür ve bu yanlıştır; dolayısıyla, Durum Else ifadesi yürütülür ve sonuç “Sınıf B” olur.
Örnek 1 – Sınav Sonucunu Bul
Case ifadesi genellikle sınav sonuçlarını bulmak için kullanılır. Örneğin, Excel'deki aşağıdaki verilere bakın.

Peter bir sınavda 86 puan alan bir öğrencidir. Şimdi sonucu aşağıdaki koşullara göre bulmamız gerekiyor.
- Puan 95’in üzerinde ise sonuç “A+” olacaktır.
- Eğer puan 85’in üzerinde ise sonuç “A” olacaktır.
- Eğer puan 60’ın üzerinde ise sonuç “B” olacaktır.
- Eğer puan 60 ve altında ise sonuç “C” olacaktır.
Case ifadesini kullanarak 3 farklı koşulu test etmemiz gerekiyor.
1: Makroya isim vererek alt prosedürü açın.

2: Select Case ifadesini açın.

3: Birden fazla koşula göre değerlendirilecek hücreye girmeliyiz. Bu durumda, puan hücresi B2'yi incelemeliyiz; dolayısıyla, Aralık nesnesini kullanarak hücre adresi B2'yi sağlarız.

4: İlk koşul, verilen hücre değerinin > 95 olup olmadığını kontrol etmektir. Bu nedenle, “Case Is” ifadesini kullanın ve mantıksal testi aşağıda gösterildiği gibi uygulayın.

5: Mantıksal test sağlandıktan sonra, DOĞRU ise ne yapılması gerektiğine karar veririz. Bu durumda, sonuç hücresi C2'de "A+" değerini almamız gerekir.

6: Uygulanan mantıksal test DOĞRU değilse bir sonrakini kullanmalıyız, yani değerin >85 olup olmadığını kontrol etmeliyiz.

7: Eğer bu DOĞRU ise C2 hücresinde A sonucuna ihtiyacımız var.

8: Aynı şekilde kalan tüm testleri uygulayın. Tam kod aşağıdadır.
Sub Exam_Result()
Select Case Range(“B2”).Value
Case Is > 95
Range(“C2”).Value = “A+”
Case Is > 85
Range(“C2”).Value = “A”
Case Is > 60
Range(“C2”).Value = “B”
Case Else
Range(“C2”).Value = “C”
End Select
End Sub
9: Kodu çalıştırın. C2 hücresinde aşağıdaki sonucu elde ederiz.

Case ifadesi uygulanan tüm mantıksal testleri değerlendirir ve A sonucunu döndürür.

Örnek 2 – “Kime” Anahtar Sözcüğünün Kullanımı
Karşılaştırma Operatörleri Yerine Sayı Aralığı Kullanımı
Karşılaştırma operatörleri yerine bir sayı aralığı da kullanabiliriz. Örneğin, önceki örnekte, > 95 uygulamak yerine, "96 ila 100" sayı aralığını kullanabiliriz ve > 85 yerine "86 ila 95" kullanabiliriz.
Daha iyi anlamak için aşağıdaki kodu inceleyin.

Örnek #3 – Test Edilecek Birden Fazla Değere Sahip Durum Beyanı
Mantıksal testte birden fazla koşulla VBA case ifadesini de kullanabiliriz . Örneğin, aşağıdaki verilere bakın.

A2'den A13'e kadar olan hücrelerde aylık bir listemiz var. Daha sonra, B sütununda aşağıdaki koşullara göre hangi çeyreğe ait olduğu belirtilmelidir.
Ocak, Şubat, Mart = Q1
Nis, May, Haz = Q2
Temmuz, Ağustos, Eylül = Q3
Ekim, Kasım, Aralık = Q4
1: Gereksinimlerimiz için kodu yazarak başlıyoruz. Çeyreği Q1 olarak belirtmek için ay, Jan, Feb veya Mar olmalıdır. Aşağıdaki kod, Case ifadesinde birden fazla koşulun nasıl uygulanacağını gösterecektir.
Not: Aynı mantığı birçok hücreye uygulamamız gerektiğinden, For…Next döngüsünü kullanarak tüm hücreleri dolaşıp çeyrek isimlerine ulaşıyoruz.

Kod Açıklaması:
Bölüm #1: Bu bölümde iki değişken tanımladık. Biri çalışma sayfasının son kullanılan satırını bulmak, diğeri ise tüm hücreler arasında döngü yapmak.
Bölüm #2: Bu bölümde çalışma sayfasındaki son kullanılan hücreyi buluyoruz.
Bölüm #3: Burada, tüm hücrelerde döngüye giriyoruz. Döngü içindeki Case ifadesini uygulayarak tüm döngü hücreleri için mantıksal testler yürütüyoruz.
Kodu çalıştıralım ve karşılığında ne elde ettiğimizi görelim.

2: Kodu çalıştırdığımızda yukarıdaki sonucu elde ederiz.
Dikkat ederseniz, "Mar" ayı için boş bir sonucumuz var. Bu sorunun nedenini bulmak için kodu bir kez inceleyelim.

Mantıksal Case ifadesini uygularken ay adını küçük harflerle verdik, oysa veri tablosunda ay adı büyük ve küçük harflerin karışımından oluşuyor.

Mantıksal Case ifadesini uygularken ay adını küçük harflerle verdik, oysa veri tablosunda ay adı büyük ve küçük harflerin bir karışımıdır. Ayrıca, veri tablosunda ilk harf büyük harftir. Bu nedenle, Case ifadesi bunu "mar" kelimesinden farklı şekilde ele alır, böylece varsayılan olarak büyük/küçük harfe duyarlı olduğunu gösterir.
3: Case ifadesini büyük/küçük harfe duyarlı hale getirmek için, modülün başına Compare ifadesini ekleyebiliriz.
Aşağıda gösterildiği gibi modülün en üstüne Option Compare Text ifadesini ekleyin .

Artık Case ifadesi büyük/küçük harfe duyarlı olmayacak.
Belirtilen koşuldaki durumu dikkate almadan bir sonuç döndürecektir.
Case ifadesini tekrar büyük/küçük harfe duyarlı hale getirmek için modülün en üstüne Option Compare Binary ifadesini ekleyin.

Dikkat Edilmesi Gereken Önemli Noktalar
- VBA'nın Case ifadesi varsayılan olarak büyük/küçük harfe duyarlıdır. Bu nedenle, koşulları test ederken büyük/küçük harf durumunu göz önünde bulundurarak değerler sağlamalıyız.
- Modülün en üstüne Option Compare Text ekleyerek Case ifadesinin büyük/küçük harfe duyarlı yapısını kapatabiliriz .
- Case ifadesi “Select Case” ile başlamalı ve “End Select” ile bitmelidir; aksi takdirde “Derleme Hatası” alırız.

- Case Statement'ta beş mantıksal test varsa, her seferinde bir vakayı sırayla test eder; üçüncü mantıksal test TRUE ise, 4. ve 5. mantıksal testleri test etmez.
VBA Case İfadesi büyük/küçük harfe duyarlıdır. Örneğin, aşağıdaki koda bakın.
Sub FAQ()
Dim MyName As String
MyName = “PETER”Select Case MyName End Sub Değişkende “PETER” kelimesi vardır. Ancak, Case ifadesinde “Peter ”dan bahsettik. Değişken adı ve koşulun adı case'te bile eşleşirse, ilk sonucu döndürecektir; aksi takdirde, ikinci sonucu döndürecektir.Case "Peter"MsgBox "Correct Matching of Words"Case ElseMsgBox "Not Correct Matching of Words"End Select
Burada, değişken ve koşulun durumu farklıdır; dolayısıyla, Case ifadesi ilk koşulu doğru olarak değerlendirmemiştir. Bu nedenle, Else ifadesinde sonucu döndürmüştür.
VBA Case ifadesi mantıksal testler ve mantıksal testin sonuçlarına dayalı hesaplamalar için faydalıdır. Case ifadesi VBA'da IF ifadesine alternatif olarak kullanılabilir.
Evet, Case ifadesini Else olmadan kullanabiliriz. Ancak, Else'i kullanmazsak, ekstra bir Case ifadesi eklemeliyiz.