Excel VBA Select Case Statement - Örneklerle Açıklanıyor

Excel VBA, birden çok koşulu analiz etmek ve bu koşullara dayalı olarak kodları yürütmek için kullanabileceğiniz IF Then Else yapısına sahiptir.

Birden çok koşulu kontrol etmenize izin veren başka bir benzer yapı, VAKA SEÇ Beyan.

Durum Seç, kontrol etmek istediğiniz üç veya daha fazla koşula sahip olduğunuzda kullanışlıdır. Bunu iki koşulla da kullanabilirsiniz (ancak bu durumlarda If Then Else'in daha kolay olduğunu hissediyorum).

Bir öğrencinin notunu aldığı notlara göre almak istediğinizde Select Case ifadesinin yararlı olduğu basit bir örnek (bu öğreticide daha sonra örnek olarak ele alınacaktır).

Not: Bu eğitimde ele alınan tüm örnek kodların VBA'daki bir modüle yerleştirilmesi amaçlanmıştır.

Vaka Sözdizimi Seç

Excel VBA'da Select Case sözdizimi aşağıdadır:

Vaka Test_İfadesi Vaka Değeri_1 Kod Bloğu'nu seçin, Test_İfadesi = Değer_1 Vaka Değeri_2, Test_İfadesi = Değer_2 Vaka Değeri_3 Kod Bloğu, Test_İfadesi = Değer_3 Vaka koşullarından hiçbiri karşılanmadığında Vaka Else Kod Bloğu Son Seç
  • Test_İfadesi: Farklı durumlar kullanarak değerini analiz ettiğimiz ifadedir (aşağıdaki örneklerle daha iyi açıklanmıştır).
  • Condition_1, Condition_2,… : Bunlar, metin ifadesinin test edildiği koşullardır. Koşul karşılıyorsa, verilen koşul için kod bloğu yürütülür.

Kullandığınız her Select Case ifadesi için End Select ifadesini kullanmanız gerekir.

Not: Bir koşul karşılanır karşılanmaz VBA, seçili vaka yapısından çıkar. Bu nedenle, beş koşulunuz varsa ve ikinci koşul karşılanırsa, VBA Select Case'den çıkar ve koşulların geri kalanı test edilmez.

Vaka Örneklerini Seçin

Şimdi VBA'da Select Case ifadesinin nasıl kullanılacağını daha iyi anlamak için birkaç örnek üzerinden gidelim.

Bu eğitimdeki örneklerin çoğunun kavramı açıklamaya yönelik olduğunu unutmayın. Bunlar, işi halletmenin en iyi yolu olabilir veya olmayabilir.

Select Case'in koşulları kontrol etmemize nasıl izin verdiğine dair basit bir örnekle başlayalım.

Örnek 1 - Sayıları Kontrol Edin

Aşağıdaki örnekte kod, kullanıcıdan 1 ile 5 arasında herhangi bir sayı girmesini ister ve ardından kullanıcının girdiği sayıyı içeren bir mesaj kutusu gösterir.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Lütfen 1 ile 5 arasında bir sayı giriniz") Select Case UserInput Case 1 MsgBox "1 girdiniz" Case 2 MsgBox "2 girdiniz" Case 3 MsgBox "3 girdiniz" Case 4 MsgBox "4 girdiniz" Case 5 MsgBox "5 girdiniz" End Select End Sub

Bu kodun kullanışlı olmaktan uzak olduğunu ve kusursuz bile olmadığını unutmayın. Örneğin, 6 veya herhangi bir dize girerseniz hiçbir şey yapmaz. Ama bahsettiğim gibi, buradaki amacım Select Case'in nasıl çalıştığını göstermek.

Örnek 2 - Select Case with IS Koşulunu Kullanma

Sayıların değerini kontrol etmek için Select Case yapısıyla bir IS koşulu kullanabilirsiniz.

Aşağıdaki kod, giriş numarasının 100'den büyük olup olmadığını kontrol eder.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Lütfen bir sayı girin") Select Case UserInput Case Is = 100 MsgBox "100'den büyük (veya eşit) bir sayı girdiniz" End Select End Sub

Örnek 3 - Tümünü Yakalamak için Case Else Kullanma

Yukarıdaki örnekte iki koşul kullandım (100'den küçük veya 100'den büyük veya 100'e eşit).

Koşullu ikinci durum yerine, Durum Başka'yı da kullanabilirsiniz.

Başka Vaka, her şeyi yakalama görevi görür ve önceki vakaların hiçbirine girmeyen her şey, Başka Vaka tarafından ele alınır.

Aşağıda Case Else kullandığım bir örnek kod var:

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Lütfen bir sayı giriniz") Vakayı Seçin UserInput Case Is < 100 MsgBox "100'den küçük bir sayı girdiniz" Case Else MsgBox "Şundan büyük (veya eşit) bir sayı girdiniz ) 100" End Select End Sub

Örnek 4 - Bir Sayı Aralığı Kullanma

Select Case'de, bir dizi sayıyı da kontrol edebilirsiniz.

Aşağıdaki kod bir giriş ister ve değere göre bir mesaj kutusu gösterir.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Lütfen 1 ile 100 arasında bir sayı giriniz") Select Case UserInput Case 1 - 25 MsgBox "25'ten küçük bir sayı girdiniz" Case 26 - 50 MsgBox "Bir sayı girdiniz 26 ile 50 arası" Durum 51 ile 75 arası MsgBox "51 ile 75 arası bir sayı girdiniz" Durum 75 ile 100 arası MsgBox "75'ten fazla bir sayı girdiniz" End Select End Sub

Örnek 5 - Alınan Notlara Göre Notu Alın

Şimdiye kadar (pratik dünyada pek kullanışlı olmayan) temel örnekler gördük.

Excel VBA'da Select Case'i kullanabileceğiniz gerçek dünyadaki bir örneğe daha yakın bir örnek.

Aşağıdaki kod size bir öğrencinin sınavdaki notlarına göre aldığı notu verecektir.

Sub Grade() Dim StudentMarks As Tamsayı Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Durum Seç StudentMarks Case Is < 33 FinalGrade = "F" Durum 33 ila 50 FinalGrade = "E" Durum 51 ila 60 FinalGrade = "D " Vaka 60 - 70 FinalGrade = "C" Vaka 70 - 90 FinalGrade = "B" Vaka 90 - 100 FinalGrade = "A" End Select MsgBox "The Not is " & FinalGrade End Sub

Yukarıdaki kod, kullanıcıdan notları ister ve buna dayalı olarak, son notu içeren bir mesaj kutusu gösterir.

Yukarıdaki kodda, tüm koşulları belirttim - 0 - 100 arası puanlar için.

Select Case'i kullanmanın başka bir yolu da sonunda Case Else kullanmaktır. Bu, tüm koşulları hesaba kattığınızda ve ardından koşullardan hiçbiri karşılanmadığında ne yapacağınızı belirlediğinizde kullanışlıdır.

Aşağıdaki kod, Not kodunun küçük bir değişiklikle değiştirilmiş halidir. Sonunda, yukarıdaki koşullardan hiçbiri doğru olmadığında yürütülecek olan bir Case else ifadesi vardır.

Sub CheckOddEven() StudentMarks'ı Tamsayı Olarak Dim Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Durum Seç StudentMarks Case Is < 33 FinalGrade = "F" Durum 33 ila 50 FinalGrade = "E" Durum 51 ila 60 FinalGrade = "D " Case 60 - 70 FinalGrade = "C" Case 70 - 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select MsgBox "The Not is " & FinalGrade End Sub

Örnek 6 - Select Case kullanarak Özel İşlev (UDF) Oluşturma

Yukarıdaki örnekte, kod kullanıcıdan işaret girişini istedi.

Ayrıca, herhangi bir normal çalışma sayfası işlevi gibi kullanılabilen ve öğrencilerin notunu döndürecek özel bir işlev (Kullanıcı Tanımlı İşlev) oluşturabilirsiniz.

Özel formülü oluşturacak kod aşağıdadır:

Fonksiyon GetGrade(StudentMarks As Integer) FinalGrade As String Select Case olarak karart StudentMarks Case Is < 33 FinalGrade = "F" Durum 33 ila 50 FinalGrade = "E" Durum 51 ila 60 FinalGrade = "D" Durum 60 ila 70 FinalGrade = "C" Durum 70 ila 90 FinalGrade = "B" Durum Başka FinalGrade = "A" Son Seç GetGrade = FinalGrade Bitiş İşlevi

Modülde bu koda sahip olduğunuzda, aşağıda gösterildiği gibi çalışma sayfasında GetGrade işlevini kullanabilirsiniz.

Örnek 7 - Select Case ile ODD / EVEN kontrol edin

Aşağıda A1 hücresindeki sayının tek mi çift mi olduğunu kontrol ettiğim örnek bir kod var.

Sub CheckOddEven() CheckValue = Range("A1").Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Sayı çift" Case False MsgBox "Sayı tek" End Select End Sub

Örnek 8 - Hafta İçi/Hafta Sonu Kontrolü (Birden Çok Koşul)

Aynı durumda birden çok değeri kontrol etmek için Select Case'i de kullanabilirsiniz.

Örneğin, aşağıdaki kod, bugünün hafta içi mi yoksa hafta sonu mu olduğunu (hafta sonu günlerinin Cumartesi ve Pazar olduğu) göstermek için geçerli tarihi kullanır.

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 MsgBox "Bugün Hafta Sonu" Case Else MsgBox "Bugün Hafta içi" End Select End Sub

Yukarıdaki kodda, aynı durumda iki koşulu (1 ve 7) kontrol ediyoruz.

Not: Hafta içi işlevi Pazar için 1 ve Cumartesi için 7 döndürür.

Örnek 9 - İç İçe Seçilmiş Durum İfadeleri

Bir Select Case ifadesini diğerinin içine de yerleştirebilirsiniz.

Aşağıda bir günün hafta içi mi hafta sonu mu olduğunu kontrol eden bir kod var ve hafta sonu ise Cumartesi mi Pazar mı olduğunu gösterecek.

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 Case Select Weekday(Now) Case 1 MsgBox "Bugün Pazar" Case Else MsgBox "Bugün Cumartesi" End Select Case Else MsgBox "Bugün Hafta içi" End Select End Alt

Yukarıdaki kodda, hafta sonunun Cumartesi mi Pazar mı olduğunu kontrol etmek için Select Case öğesini iç içe yerleştirdim.

Not: Yukarıda gösterilen örnek kavramı açıklamak içindir. Bu, hafta içi/hafta sonunu öğrenmenin en iyi veya en pratik yolu değildir.

Örnek 10 - Select Case ile Metin Dizesini Kontrol Etme

Select Case'i kullanarak belirli dizeleri kontrol edebilir ve ardından buna göre kodu çalıştırabilirsiniz.

Aşağıdaki örnek kodda, kullanıcıdan departman adını girmesini ister ve onboarding için bağlantı kurması gereken kişinin adını gösterir.

Sub OnboardConnect() Dim Departman As String Departmanı = InputBox("Departman Adınızı Girin") Vaka Seçin Departman Vakası "Pazarlama" MsgBox "İşe Alım için lütfen Bob Raines ile bağlantı kurun" Vaka "Finans" MsgBox "Lütfen İlk Katılım için Patricia Cruz ile bağlantı kurun" Case "HR" MsgBox "Overboarding için Oliver Rand ile bağlantı kurun" Case "Admin" MsgBox "Onboarding için lütfen Helen Hume ile bağlanın" Case Else MsgBox "Onboarding için Tony Randall ile bağlantı kurun" End Select End Sub

Yukarıdaki tüm örneklerin Excel VBA'da Select Case kavramını ve uygulamasını anlamada yardımcı olduğunu umuyoruz.

Aşağıdaki VBA Eğitimlerini de Beğenebilirsiniz:

  • Excel VBA Döngüleri - Sonraki İçin, Yaparken, Yapana Kadar, Her Biri İçin.
  • Excel VBA'da Sonraki Döngü için.
  • Excel'de Makro Nasıl Kaydedilir.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave