KOŞULLU DURUMLAR-2 SELECT CASE

 Excel VBA programlama dilinde koşullandırma yapmak amacıyla ‘If’ ifadesine alternatif olarak kullanılan Excel VBA Select Case yani Select Case ifadesi(Statement) Koşullu Durumlar(https://macronimbus.com/kosullu-durumlar/ ) dersinde anlatılan durumların hepsinde kullanılabimektedir. 

    Select Case ifadesinin en büyük farkı eğer çok katmanlı bir sınıflandırma yapıyorsak veya tek bir durum üzerinde çok sayıda koşul uyguluyorsak, yazım olarak kullanımının If-Else- End If ifadesinden daha kolay olmasıdır.

    Bir örnek üzerinde ifadeyi blok blok inceleyerek Excel VBA Select Case ifadesinin kullanımını görelim. İlk önce ‘Marka ve Modeline Göre Otomobil Fiyatları’ tablomuzu hatırlayalım. Tablomuzun ilk haline ek olarak Yıllık Mtv tutarlarını ve Select Case kullanarak dolduracağımız gelir durumu adında boş bir sütunuda tablomuzun en sağına ekledik.

Select Case Tablo Örneği 1

Tablomuz farklı markaların farklı modellerine ait özellikleri gösteren bir tablodur. Bizim amacımız Select Case kullanarak Gelir Seviyesi sütununu arabaların satış fiyatlarına bakarak farazi olarak kendi koyduğumuz sınırlamaları göz önüne alarak doldurmak. Ornek vermek gerekirse 100 000 TL altında araba satın alabilenler ‘Orta Gelirli’ olarak sınıflandırılmışken 1 000 000 TL üzerinde etiket fiyatı olan arabayı satın alan kişiler ise milyoner olarak sınıflandırılmıştır, daha doğrusu yazdığımız dok ile sınıflandırılacaktır. Şimdi yazmış olduğumuz kodu inceleyelim.

Select Case Örnek Kod

    Sol tarafta kod bloğumuzu görebiliyoruz. İnceleme bakımından daha kolay olması açısından hem farklı renklerle kodun farklı bölgelerini gösterdik hem de numara verdik. Şimdi ilk önce kodun nasıl çalışacağını daha doğrusu amacımızı yazarak örneği incelemeye başlayalım.

    Kodun arzu ettiğimiz çalışma şekli; İlk önce kodu çalıştırmadan istediğimiz bir araba markasına tıklayacağız. Sonrasında ise kodu her çalıştırdığımızda, tıkladığımız otomobil markasının model fiyatına göre kod gelir seviyesi sütununu dolduracak. 3 numaralı bölgede gelir seviyesinin belirlenebilmesi için yaptığımız sınıflandırmayı görebilirsiniz. Eğer Otomobil fiyatı 100 000 TL’den düşükse ‘Orta Gelirli’ 100 000 TL ile 200 000 TL arasındaysa ‘Üst Sınıf’, 200 000 TL ile 500 000 TL arasındaysa ‘Zengin’, v.b. olmak üzere otomobil müşterilerini arabalarına ödedikleri tutar doğrultusunda gelir seviyeleri bakımından sınıflandıracağız. Kolaylık olsun diye bir adet de tuş ekleyeceğiz. Bu şekilde VBA Editor’u açmadan veya kısa yol tuşu kullanmadan tek tıkla istediğimiz sınıflandırmayı en kolay şekilde yapmış olacağız.     

Şimdi kod bloklarını ayrı ayrı inceleyelim.

    1 NUMARALI KISIM

Bir numaralı kısım bizim kodun alt kısımlarında kullanacağımız değişkenlerin tanımlanması ve tanımlanan değişkenlerin(Fiyat değişkeni) değerlerinin nasıl atandığı görülmekte. 

2 NUMARALI KISIM

2 numaralı bölümde asıl itibariyle If bloğu kullanarak seçilen hücrenin boş olma durumunda programın çalışmamasını sağlıyoruz. Aksi halde farklı hatalar ile karşılaşabilir. Bir önceki dersimizden hatırlayacağınız üzere If bloğunda eğer If ifadesinin yanında yazan koşul gerçekleşirse If bloğu hemen altında yazdığımız kodu çalıştırıyordu. Aynı şekilde eğer If bloğunda istenilen koşul sağlanamadı ise de bu sefer Else ifadesinin altına yazılan kod çalışıyordu. Bu sayede IF bloğu olayları  farklı sonuçlara göre ayırabiliyordu. Buradaki durum da çok basit bir şekilde hücrenin boş olma durumu. Yani eğer seçilen hücre boşsa ‘Exit Sub’ yani program kapatılıyor. 

Select Case Ornek Kod 2

SElect Case;

Bu ‘Excel VBA Select Case’ ifadesini tam olarak aslında Türkçe’ye çevirirsek dahi bize konuyu büyük oranda açıklıyor. Select Case, ‘Durum Seç/ Durum Belirle’ anlamına geliyor. Peki artık ne anlama geldiğini bildiğimize göre kodu tam olarak açık bir şekilde detaylandıralım.

‘Select Case’ den sonra yapmamız gereken sınıflandıracağımız, değerlendireceğimiz, ayrıştıracağımız özelliği koda yazmak. Bu özellik insanları genç – yaşlı diye ayıracak olursak ‘yaş’, arabaları ucuz – pahalı diye ayıracak olursak ‘fiyat’, öğrencileri geçti – kaldı diye sınıflandıracaksak da ‘not ortalaması’ dır. Daha doğrusu ‘yaş’ / ‘fiyat’ / ‘not ortalamsı’ değişkenlerinin aldığı değerlerdir.

Bizim örneğimizde fiyat; seçilen hücrenin( biz markaarın olduğu hücreyi seçiyoruz) 7 hücre sağındaki hücrenin aldığı değerdir.

Fiyat  =  ActiveCell.Offset(0,7).Value

Şimdi biz artık değerlendireceğimiz şeyi yani fiyatı belirledik ve Select Case’den sonra da yazarak koda girmiş olduk. 

 

Yani biz bu noktadan sonra Case=Durum=Fiyat için değerlendirme yapabileceğiz.

Artık Case (yani seçtiğimiz durum) ne zaman kullansak, fiyat yerine geçtiğini biliyoruz. Yani Case 100000 to 500000 demek, Fiyat 100000 ile 500000 arasında demekle aynı şey.

Şimdi yazılış şekline bakalım. 

Case Is < 100 000 ——> yani Fiyat 100 000’den küçükse; bir alt satırdaki kod işleme giriyor. Yani Gelir Seviyesi = “Orta Gelir” . Yazılış şekli bu kadar basit.

Fiyat üzerinde gördüğünüz gibi istediğimiz kadar aralık oluşturabiliriz. Biz 6 adet gelir seviyesi ve onlara bağlı araba fiyatı belirledik. Siz bu değerleri değiştirebilirsiniz. Hatta halihazırdaki kodun aralarına girip yazabilirsiniz. İsterseniz gelir seviyesini 6 ‘dan 10 isterseniz de 20’ye çıkartabilirsiniz. Biz örneğimizde gördüğünüz gibi 6’ya böldük.

Select Case Fiyat

Case Is < 100000______________________________________________________Araba Fiyatı 100 000 TL’den düşükse “Orta Gelir”

Gelir Seviyesi=”Orta Gelir”

Case 100000 to 200000  _____________________________________________Araba Fiyatı 100 000 TL ile 200 000 TL arasındaysa “Üst Sınıf”

Gelir Seviyesi=”Üst Sınıf”

Case 200000 to 500000______________________________________________Araba Fiyatı 200 000 ile 500 000 TL arasındaysa “Zengin”

Gelir Seviyesi=”Zengin”

Case 500000 to 1000000____________________________________________Araba fiyatı 500 000 TL ile 1 000 000 TL arasındaysa “Çok Zengin”

Gelir Seviyesi=”Çok Zengin”

Case 1000000 to 2000000__________________________________________Araba Fiyatı 1 000 000 TL ile 2 000 000 arasındaysa “Milyoner” 

Gelir Seviyesi=”Milyoner”

Case Is > 2000000__________________________________________________Araba Fiyarı 2 000 000 TL’den fazlaysa “Multi Milyoner”

Gelir Seviyesi=”Multi Milyoner”

End Select

Yazdığımız kod artık Case = Fiyat’ın hangi aralıkta olduğunu belirleyecek ve ‘Gelir Seviyesi’ değişkenine değer olarak atayacaktır. Şimdi ise sıra ‘End Select‘ ile Select Case bloğunu kapatmak ve değişkeni Gelir Seviyesi sütunundaki yerine yazdırmaktır.

 

 

Artık Gelir Seviyesi değişkenimiz yaptığımız sınıflandırma doğrultusunda bir değere sahip. 

Seçtiğimiz ‘Marka’ hücresinin 7 adet sağındaki fiyatına göre arabayı satın alan kişinin gelir seviyesini belirledik ve seçtiğimiz hücrenin 9 hücre sağındaki Gelir Seviyesi sütununa bu değeri aşağıdaki kod ile yazdırıyoruz.

ActiveCell.Offset(0,9).Value=GelirSeviyesi

ve sonra da 

ActiveCell.Offset(1,0).Select kodunu yazarak bir alt hücreye seçiyoruz. Bu sayede en üst marka adını seçip devamlı kodu çalıştırdığımızda teker teker bütün markaların satıcılarının gelir seviyelerini belirlemiş oluyoruz.

Detaylı olarak incelediğimiz Sub-Ruoutine içerisinde mavi olarak gösterdiğimiz bu blok, If bloğundaki hücrenin boş olmaması koşulunun sağlandığı durumda tetikleniyor ve uygulanıyor. If bloğunun Else kısmında ise yani seçilen hücrenin boş olma durumdan ise kod kendi kendini kapatıyor.

Alt kısımda kodun çalıştırıldıktan sonra Gelir Seviyesi Sütununu nasıl doldurduğunu görüyoruz.

 

 

Ek olarak kullanımı kolay olsun diye sağ altta yer alan düğmeyi ekledik. 

 

Tuşa Makro Atamayı Hatırlamayanlar için;

1)Rıbbon üzerinde Insert(Ekle) tuşuna bas

2) Shape / Picture (Şekil Resim) seç ve sonra Worksheet üzerinde istediğimiz yere tıklayarak yerleştiriyoruz. 

3) Üzerine yazı yazmak için çift tık yada sağ tık ve açılan seçeneklerden ‘Edit Text’. Bu sayede istediğimizi yazdırabiliyoruz.

4) Son Olarak da yine tuşun üzerine gel, Sağ tıkla, açılan seçeneklerden ‘Assign Makro’ seçeneğini tıkla çıkan pencerede kodun yazılı olduğu Sub-Routine’i seç.

İşte bu kadar. Artık o tuşa ne zaman tıklarsan yazdığın makro devreye girecek. Eğer herhangi bir değişiklik yapmak isterseniz de sol yerine sağ tıklayarak istediğiniz değişiklikleri tuş üzerinde gerçekleştirebilirsiniz. 

 

 

Dünya Çapında Araştırmacılara Ait Çalışmaları Okumak İsterseniz https://www.researchgate.net/profile/Ender_Dagdelen adresini Ziyaret Edebilirsiniz. Ana Sayfaya Dönmek İsterseniz De Aşağıdaki Tuşu Tıklayınız.

HERKESE KOLAY GELSİN, İYİ ÇALIŞMALAR

Soru ve Öneriler İçin;

[email protected]