EXCEL VBA CASE İFADESİ

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.

VBA Durum Bildirimi - Intro.jpg

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.

VBA Durum Bildirimi - Giriş - Çıktı

A1 hücresindeki değer (56), A2 hücresindeki değerden (100) küçük olduğundan, FALSE çıktısını alırız, yani Evet, A1 hücresinin değeri A2 hücresinin değerinden küçüktür

Ö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.

VBA Durum Bildirimi - Sözdizimi

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.

VBA Durum Bildirimi - Kullanı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.

VBA Case Bildirimi - Kullanım - Adım 1

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

VBA Case Bildirimi - Kullanım - Adım 2

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.

VBA Case Bildirimi - Kullanım - Adım 3

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.

VBA Case Bildirimi - Kullanım - Adım 4

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.

VBA Durum Bildirimi - Kullanım - Adım 5

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.

VBA Durum Bildirimi - Kullanım - Adım 6.jpg

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.

VBA Durum Bildirimi - Kullanım - Adım 8

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

VBA Durum Bildirimi - Kullanım - Adım 8 - Çıktı

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.

VBA Durum Bildirimi - Örnek 1

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.

VBA Durum Bildirimi - Örnek 1 - Adım 1

2: Select Case ifadesini açın.

VBA Durum Bildirimi - Örnek 1 - Adım 2

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.

VBA Durum Bildirimi - Örnek 1 - Adım 3

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.

Örnek 1 - Adım 4

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.

VBA Durum Bildirimi - Örnek 1 - Adım 5

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

VBA Durum Bildirimi - Örnek 1 - Adım 6

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

VBA Durum Bildirimi - Örnek 1 - Adım 7

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.

VBA Durum Bildirimi - Örnek 1 - Adım 9

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

Örnek 1 - mantıksal test

Ö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.

VBA Durum Bildirimi - Örnek 2

Ö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.

Örnek 3

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.

VBA Durum Bildirimi - Örnek 3 - Adım 1

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.

Örnek 3 - Adım 1 - Bölüm 3

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.

VBA Durum Bildirimi - Örnek 3 - Adım 2

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.

Örnek 3 - Adım 2 - Harfleri karıştır

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 .

Örnek 3 - Adım 3

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.

Örnek 3 - Adım 3 - İkili

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.
derleme hatası
  • 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.

1. Excel VBA Case Statement Neden Çalışmıyor?

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 Else
MsgBox "Not Correct Matching of Words"
End Select




SSS 1 - Çıktı

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.

2. Excel VBA Case Statement'ın kullanımı nedir?

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.

3. VBA'da Else olmadan Case Statement'ı kullanabilir miyiz?

Evet, Case ifadesini Else olmadan kullanabiliriz. Ancak, Else'i kullanmazsak, ekstra bir Case ifadesi eklemeliyiz.



Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...