Vba'da select case deyimi nasıl kullanılır?
Anahtar noktaları
- SELECT CASE ile özellikle ikiden fazla koşul üzerinde çalışırken birden çok koşulu test edebilirsiniz.
- SELECT CASE ile yazdığınız kod, standart koşullu koda göre çok daha yapılandırılmıştır.
- Koddaki değerlerden bir veya daha fazlasını ayarlamanız gerektiğinde bunu değiştirmek daha kolaydır.
VBA Seçim Durumu Nedir?
VBA SELECT CASE, birden çok koşulu test etmeye yönelik bir ifadedir. Bu ifadede, bir koşulu belirtebilir, ardından bu koşul doğruysa yürütülecek kodu belirtebilir, ardından ikinci bir koşulu ve bu koşul doğruysa yürütülecek kodu belirtebilirsiniz. Bu şekilde birden çok koşulu ve birden çok ifadeyi belirtebilirsiniz.
Vakayı seçmek için sözdizimi
Aşağıda bir select case ifadesi yazmak için izlemeniz gereken sözdizimi verilmiştir.
Select Case Test Expression Case (Condition to Test) Statement1 [Line of Code to Run if CASE 1 is TRUE] Case (Condition to Test) Statement1 [Line of Code to Run if CASE 2 is TRUE] Case Else Statement [Line of Code to Run if no CASE is TRUE] End Select
SELECT CASE’de sözdizimi “Seç” anahtar sözcüğüyle başlar ve “Seçimi Sonlandır” ile biter. Sözdizimini anlamak için onu dört bölüme ayırmamız gerekir:
- İLK kısmında tüm koşulların test edildiği “test ifadesini” belirtmeniz gerekiyor.
- Bundan sonra İKİNCİ bölümde test edilecek durumu (yani test edilecek durumu) belirtmeniz gerekiyor.
- Şimdi ÜÇÜNCÜ bölümde, ikinci bölümdeki koşulun DOĞRU olup olmadığını test etmeniz gereken başka bir durum yazmalısınız.
- Son olarak DÖRDÜNCÜ Bölümde yukarıdaki durumların her ikisinin de DOĞRU olmaması durumunda ortaya çıkması gereken sonucu belirtmelisiniz.
Select case ifadesini anlamak için basit bir örnek
SELECT CASE’in sözdizimi açıklayıcıdır ve kod yazarken takip edilmesi oldukça kolaydır. Ama bir örnek alalım ve tamamen anlayalım. Aşağıda A1 hücresinin değerini test etmek için basit bir kodunuz var.
Sub SelectCaseExample1() Select Case Range("A1").Value Case "Yes" MsgBox "It's a Yes." Case "No" MsgBox "It's a No" Case Else MsgBox "Can't Say" End Select End Sub
Şimdi bu kodu her satırda anlayalım:
- İLK, koşulu test etmek için bir ifade olarak kullanmak üzere SELECT CASE anahtar sözcüğüne ve A1 hücresine sahipsiniz.
- İKİNCİSİ , CASE anahtar sözcüğüne ve A1 hücresinden kontrol edilecek koşula (“EVET”) ve durum1’de belirtilen koşulun doğru olması durumunda “Evet” mesajını içeren bir mesaj kutusu görüntüleyecek koda sahipsiniz.
- ÜÇÜNCÜSünde, yine A1 hücresinden kontrol edilecek durum anahtar kelimesine ve koşuluna (“Hayır”) ve ikinci durumda belirtilen koşulun doğru olması durumunda “Bu bir hayır” mesajını içeren bir mesaj kutusu görüntüleyecek koda sahipsiniz.
- DÖRDÜNCÜ , CASE ELSE anahtar sözcüğüne ve her iki durum da doğru değilse “Söyleyemiyorum” mesajını içeren bir mesaj kutusu görüntülemek için bir kod satırına sahipsiniz.
- BEŞİNCİ , SELECT CASE ifadesini sonlandırmak için END SELECT anahtar sözcüğüne sahipsiniz.
İlgili: VBA MESAJ KUTUSU
Önemli noktalar
- Birden fazla koşulu test edebilir ve sonuca göre bir kod satırı çalıştırabilir.
- Is anahtar sözcüğünü kullanarak bir koşulu test ederken karşılaştırma işleçlerini (=, >, <, <>, >=, <=) kullanabilirsiniz.
- Aynı durumda birden fazla koşulu test etmek için virgül kullanabilirsiniz.
- Tek bir durumda bir koşulu test ederken bir dizi sayı da kullanabilirsiniz.
- Bir koşul karşılandığında VBA, ifadenin geri kalan durumlarını test etmek için durur.
- Koşullardan hiçbiri karşılanmadığında bir kod satırını çalıştırmak için sonuna bir case else bölümü de ekleyebilirsiniz.
- CASE END ifadesini kullanarak atlayabilirsiniz.
Kullanılacak daha fazla örnek Büyük/küçük harf seç
SELECT CASE’i farklı şekillerde kullanmanın zamanı geldi; işte öğrenebileceğiniz yararlı ve temel örneklerden bazıları.
100 Excel Makro Örneği
1. Sayıların olduğu durumu seçin
SELECT CASE ifadesi için VBA kodunu yazarken değerleri karşılaştırmak için operatörleri kullanabilirsiniz. Artık aşağıdaki kodda koşulları test etmek için >, < ve = operatörleri var.
Sub SelectCaseExample1() Select Case Range("A1").Value Case Is >= 45 MsgBox "Pass" Case Is < 45 MsgBox "Fail" End Select End Sub
- Bu ifadenin ilk durumu, A1 hücresinin değerinin 45’ten büyük veya eşit olup olmadığını kontrol eder ve “Geçti” mesajını içeren bir mesaj kutusu döndürür.
- İfadenin ikinci durumu ise A1 hücresinin değerinin 45’ten küçük olup olmadığını kontrol eder ve “Başarısız” mesajını içeren bir mesaj kutusu döndürür.
2. Sayı aralığı içeren durumu seçin
Koşulu test etmek için bir dizi sayı da kullanabilirsiniz. Aşağıdaki kodda, her durumda test edilecek bir dizi sayı içeren bir koşulunuz var.
Sub SelectCaseExample2() Select Case Range(“A1”).Value Case 45 To 100 MsgBox “Pass” Case 0 To 44 MsgBox “Fail” Case Else MsgBox “Out of Range” End Select End Sub
- İfadenin ilk durumu, 45 ile 100 arasındaki sayı aralığını kullanarak A1 hücresindeki sayıyı kontrol eder ve değer bu aralığın altına düşerse “Geçti” sonucunu döndürür.
- İkinci ifade, A1 hücresindeki değerle test etmek için 0 ile 44 arasında bir aralığa sahiptir ve değer bu aralığın altına düşerse “Başarısız” sonucunu döndürür.
- Üçüncü ifade ise, birinci ve ikinci durum yanlışsa “Aralık Dışı” mesajını içeren bir mesaj kutusu görüntüleyen case else’dir.
3. İki nokta üst üste operatörünü kullanma
SELECT CASE için kod yazarken, büyük/küçük harfin tamamını tek bir satıra yazmak için iki nokta üst üste operatörlerini kullanabilirsiniz.
Aşağıdaki kodda satır büyük harfle başlar, ardından test edilecek koşul, ardından iki nokta üst üste gelir ve bu durumda yürütülecek ifade doğrudur.
Sub SelectCaseExample3() Select Case Range(“A1”).Value Case 45 To 100: MsgBox “Pass” Case 0 To 44: MsgBox “Fail” Case Else: MsgBox “Out of Range” End Select End Sub
4. Select Case’i Birden Çok Koşulla Kullanın
Tıpkı bir vaka için aralık ayarlamaya benzer şekilde, durumu test etmek için birden fazla değer de belirtebilirsiniz. Aşağıdaki kodda her durumda test edilecek üç sayı vardır.
Sub SelectCaseExample() Select Case Range("A1").Value Case 1, 3, 5 MsgBox "Yes" Case 2, 4, 6 MsgBox "No" Case Else MsgBox "Out of range" End Select End Sub
- Bu kodun ilk durumu, hücre değerinin 1, 3 veya 5 olup olmadığını test edecek ve bir mesaj kutusunda “Evet” sonucunu verecektir.
- Bu kodun ikinci durumu ise A1 hücresinin değerinin 2, 4 veya 6 olup olmadığını test edecektir.
5. Özel Bir İşlevde Select Case’i Kullanma
Bir VBA işlevi için kod yazarken SELECT CASE’i de kullanabilirsiniz.
Function udfGrade(student_marks As Integer) Dim myGrade As String Select Case student_marks Case Is < 40: myGrade = “Bad” Case 41 To 50: myGrade = “Average” Case 51 To 60: myGrade = “Good” Case 61 To 80: myGrade = “Very Good” Case 81 To 100: myGrade = “Excellent” End Select udfGrade = myGrade End Function
Yukarıdaki fonksiyonda, bir hücrede öğrencilerin puanlarını kontrol etmek için beş kutu bulunmaktadır. 5 durumun tamamı bir sayı aralığı kullanır ve ifadede tanımlanan değeri döndürür.
6. İç içe koşullardan Select Case’i kullanma
Ayrıca iç içe geçmiş bir koşul ifadesi de oluşturabilirsiniz. Söylemeye çalıştığım şey, seçilen durumla birden fazla koşulu test etmek için kod yazabileceğinizdir.
İki farklı hücrenin değerlerine göre koşulları test edebilecek bir kod yazmak istediğinizi hayal edin.
Sub SelectCaseStatement() Select Case Range("A2") Case "Boy" Select Case Range("B2") Case "Commerce": MsgBox "Boy (Commerce)" Case "Science": MsgBox "Boy (Science)" End Select Case "Girl" Select Case Range("B2") Case "Commerce": MsgBox "Girl (Commerce)" Case "Science": MsgBox "Girl (Science)" End Select End Select End Sub
Yukarıdaki kodda üç durum seçme ifadeniz var. A2 hücresinin değerini “Erkek” veya “Kız” olup olmadığını kontrol eden bir ana ifade vardır.
Ve sonra, sonuca göre iki talimat daha yürütülür ve B2 hücresinin Ticaret mi yoksa Bilim mi olduğu değeri kontrol edilir.
CHOOSE CASE vs. IF THE ELSE İfadesi
- Birden çok koşulu test etmek istediğinizde IF-THEN yerine SELECT CASE kullanarak kod yazmak kolaydır.
- IF-THEN ile karşılaştırıldığında SELECT CASE deyimini düzenlemek ve değişiklik yapmak bile kolaydır.