CONSTANTS VE ENUMERATIONS

1- Constant Ve Enumerations Nedir?

    Constants ifadesinin Türkçesi ‘Sabite’dir ve aslında konuyu tek başına ifade edebilmektedir. Değişkenler her nasıl farklı değerler ihtiva edebiliyorsa, Constants yani Sabite’ler, değişkenlerin tam tersine, tek bir değere sahiptirler. Ve bu değerler değiştirilemez. 

    Enumerations ise belirli bir mantığa göre oluşturulmuş bir takım constantların oluşturduğu gruplardır. Constant’lar bütün farklı veri tiplerinde tanımlanabilirler. Enumerations ise sadece ‘Long’ veri tipinde tanımlanabilirler. Yani enumeration içerisinde yer alan Constant   –2 147 483 647 ile 2 147 483 647 arasında tam sayı değerler alabilir.

     Constants ve enumerations renklerin tanımlanmasından, illerin nüfus sayılarına, pi sayısı gibi değerlerden bazı ekonomik katsayılara kadar her türlü alanda kullanılabilirler. Burada önemli olan nokta, ister Sub-Routine, ister Module ister proje kapsamında olsun, eğer kullanacağınız veya kullanılmasını istediğiniz ve kesinlikle değişmemesi gereken bir değer tanımlayacaksanız, bu işlemi constants ve enumerations ile yapabileceğinizdir. Çünkü eğer kullanıcılar tarafından constants ve enumerations değerleri ile ilgili bir değişiklik yapılmaya çalışılır ise program hata verecektir. Mesaj penceresinde;

Compile Error

 Assignment to cosntant not permitted    yazısı çıkacaktır. 

     Constants ve Enumerations’u değerini hatırlamakta güçlük çektiğiniz şeylerle ilgili de kullanabilirsiniz. İllerin plaka numaraları bu durumu anlatmak için basit ancak iyi bir örnektir. Karayollarının uzunlukları, şehirlerin yüzölçümleri, suyun kaynama sıcaklığı, mutlak sıfır noktası, avagadro sayısı, defilatör katsayıları, Cos30, Sin45, Tan30 gibi trigonometrik değerler, uygulanacak faiz oranları ve aklınıza gelebilecek birçok değer Constants ve Enumerations ile kullanıcılara sunulabilirler. 

     Şimdiye kadarki derslerimizde constants ve enumerations’lardan çokca faydalandık ve farklı yerlerde kullandık. Aklınıza bir anda örnek gelmeyebilir. Onun için size çok basit bir örnek vereyim, .Offset metodu içinde kullandığımız yönler. Evet kullandığımız xlDown, xlUp, XlToLeft, xlToRight aslında constant’tır, yani sabit değer taşıyan etiketlerdir. 

    Peki constant ve enumerations’ı nasıl tespit edebiliriz ve diğer veri tiplerinden ayırabiliriz. Hemen VBA Editor—->View—–>Object Browser penceresini açıyoruz. 

Constants Ve Enumerations - ObjectBrowser    Object Browser penceresini açıp sol üst tarafta excel’i seçerseniz sadece excel’e özgü verileri Classes sütunu içerisinde görürsünüz. Burada excel’i seçmemizin sebebi ise sadece bizi ilgilendiren kısma daha kolay ulaşabilmek. Classes sütunu içerisinde, sütunun sağ tarafında arama çubuğu ile hareket ederek,  ekranda görmüş olduğunuz enumerations’ları bulduk. Enumerations’ı ayırt edebilmemizi sağlayan en bariz ayrıntı, yanlarında yer alan 2 adet çapraz yerleştirilmiş sarı kutucuktur. 

     Herhangi bir enumerations’a tıkladığınızda ise, sağ tarafta enumerations içinde tanımlanmış olan constantları görebilirsiniz. Gördüğünüz gibi constants sembolü de içinde iki adet yatay çizgi olan, dış sınırı siyah içi gri olan kutucuktur. Yani enumerations sembolünün tek kutulu ve farklı renklisidir. 

      Enumerations’ın aldığı değerlerin long integer tipinde oluduğundan bahsetmiştik. Burada kastedilen tabi ki enumerations içindeki constants’tır. Basit olarak herhangi bir constant’a tıklarsanız, taşıdığı değeri OBject Browser size gösterecektir. Bu görselde basit çizimlerle constants’ın değerlerini nerede görebileceğinizi göstermeye çalıştık ve bütün yön değerlerini, constants yanına kırmızı renkte yazdık. 

     Şimdiye kadar .OffSet metodu ile kullanmış olduğumuz XlDown ifadesinin de aslında -4121 rakamına tekabül ettiğini burada öğrenmiş olduk. Constant kullanımının burada kullanıcılar için ne kadar önemli olduğunu görebiliyoruz. Çünkü eğer XlDown constant’ı tanımlı olmasaydı, aklımızda -4121 rakamını tutmak zorunda kalacaktık. Oysa XlDown( Yani XlAşağı demek) ile hem basitçe yön yazmış oluyoruz hem de VBA, bir yön ismi olan XlDown olarak tanımlanan bir Constant sayesinde ne tarafa doğru bir öteleme yapacağını bilebiliyor.

2- Constants Nasıl Tanımlanır?

    Constants ve Enumerations, sizin de farkettiğiniz gibi iç içe bir konudur. Bu kapsamda dersi tüme varım, yani constans’tan enumerations’a doğru işleyeceğiz. İlk olarak bir constant’ın nasıl tanımlandığını öğrenerek derse başlayalım.  

     Bir firma kurduğunuzu ve bu firma için de bazı antetler hazırladığınızı düşünün. Hatta firma yazışmalarında kullanılmak üzere şirket çapında sadece sizin şirketinize özel bir yazı rengi belirlemek istediğinizi varsayalım. Her ne kadar bu örnek bazılarınız için uçuk görünse de aslında firmanın tanınması konusunda inanın en ufak bir şey dahi akılda kalabilir. Örneğin son yıllarda otomobil firmaları bazı modelleri için renk pantentleri alıyor ve diğer markalar tarafından bu renklerin kullanılmasının önüne geçiyor(Renault Clio Kırmızısı gibi). Neyse firma yazışmaları için seçtiğiniz rengi ister RGB(0,0,0) formatında elle yazarak elde edebilirsiniz yada basitçe https://color.adobe.com/tr/create sitesini ziyaret ederek görsel olarak oluşturabilirsiniz. Ben renk seçerken yukarıda linkini verdiğim ADOBE COLOR WHEEL’i kullanacağım.

Constants ve Enumerations Color

    Alt ve orta kısımda oluşturduğum renk tonlarını ve bu renkleri oluşturan R G B değerlerini görüyorsunuz. Eğer VBA editor içerisinde 

    Range(“a1”).Font.Color=rgb(99, 120, 254)

 yazarsanız ekranda görünen ortadaki renk ile yazılırınızı renklendirebilirsiniz. 

 

 

    Peki biz bu RGB rengi nasıl bir constant olarak atayabiliriz??? 

    Biraz önce yönlerin aslında birer sayı değeri olduğunu öğrenmiştik. O zaman renklerin de aslında birer sayı ile tanımlandıklarını duymak sizi şaşırtmayacaktır. Şimdi geriye tek kalan; RGB(99, 124, 254) olarak belirlediğimiz rengimizin sayısal karşılığını bulmak. İşte tam bu noktada yardımımıza “Immediate Window” yetişiyor. Immediate Window’a giriyoruz ve ?RGB(99,124,254) yazıyoruz, immediate window ise bize bu RGB renginin sayısal karşılığını veriyor.

Constants ve Enumerations - ImmediateWindow

 Sol tarafta Immediate Window’da görebildiğiniz gibi hem istediğimiz rengi tanımlayan sayı değerini hem de diğer rgb constants değerlerini, soru işareti kullanarak öğrenebiliyoruz. 

  

  Artık şirketimiz için seçmiş olduğumuz rengin, VBA tarafından tanınacağı rengi de bildiğimize göre artık yapmamız gereken tek şey constantın tanımlanması kalıyor. 

sub Constant_Tanımla()
     Const AntetRengi as Long = 16677987 
     Range("A1:F1").Font.Color = AntetRengi
End Sub

Şeklinde şirketimize ait antetin rengini tanımlayıp, hemen aynı Sub-Routine içerisinde gördüğünüz gibi kullanabiliriz. 

  Intellisense listesinde rgb renkler nasıl görüntülenebiliyorsa, artık AntetRengi constant’ı da görüntülenebilecektir.

    Her nasıl her bir constant içi yatay çizgili gri kutucukla sembolize ediliyorsa, bizim tanımladığımız constant da yine aynı şekilde sembolize edilir.Constants ve Enumerations - AntetRengi

3- Constants Etki Alanlarının Belirlenmesi

    Constant’ların etki alanları tanımlandıkları yerlere göre belirlenir. Örneğin eğer Sub-Routine içerisinde constant tanımlanırsa, sadece içinde tanımlandığı Sub-Routine içinde geçerli olur ve kullanılabilir. 

     Eğer constant Sub-Routine içinde değil de Module’un en tepesinde  tanımlanırsa constant module içinde yer alan butun Sub-Routine’ler için geçerli olur.

     Eğer Constant, sadece constant’lara özel ayrı bir Module içinde tanımlanırsa ise o zaman o Constant proje çapında kullanılabilen bir constant olur.

     Not: Constant’lar module ve proje kapsamında tanımlanacaksa eğer önüne Public ifadesini alır. 

Sub-Routine Seviyesinde 

Module Seviyesinde 

Proje Seviyesinde 

4- Constant'ların Matematiksel Hesaplamalarda Kullanımı

Matematiksel işlemler için kullanılacak herhangi bir değeri, bu şekilde constant olarak tanımlarsanız, hesaplar içerisinde kullanmanız, tek tek değerleri hesaplarda kullanmanızdan çok daha kolay olacaktır. 

     Gördüğünüz bu fonksiyon ile çok basit bir şekilde dairenin alanını hesaplayabiliyoruz ve bu esnada PiSayisi constant’ını kullanıyoruz. Genel olarak hesaplamalarda sabitlerin kullanımı bu kadar basittir. 

5- Enumeration Nasıl Tanımlanır?

    Enumeration ifadesinin constant’lardan oluşan bir liste, grup olduğundan bahsetmiştik. Şimdi ise bu grubun nasıl tanımlandığını görelim.

  Public Enum AsalGazlar
He = 2
Ne = 10
Ar = 18
Kr = 36
Xe = 54
Rn = 86
UUo = 118
End Enum

    şeklinde enumeration tanımlanır. AsalGazlar burada bizim tanımlanmış olduğumuz enumerations adıdır. AsalGazlar enumeration’ı asal gazların atom numaralarını tutmaktadır. Bir örnek niteliğinde olan bu enumerations sayesinde asal gazların atom numaralarını, sadece isimlerini kullanarak öğrenmemizi ve kullanabilmemizi sağlar. Enumeration’ın kullanımı daha doğrusu çağrılması 2 farklı şekilde gerçekleştirilebilir. İlk olarak Enumerations adını sonra nokta ile constant adını çağırabiliriz. Veya direk constant adını kullanarak çağırırız. Burada enumerations adını kullanmamız, enumeration altındaki constant’ları görerek işlem yapmamıza yardımcı olur. Onun haricinde bir farkları yoktur.

    İki farklı kullanımı yukarıda görebilirsiniz. İsterseniz direk Xe olarak constant adını yazarsınız. İsterseniz de daha garanti olsun diye AsalGazlar Enumeration adını kullanıp, açılan intellisense listesinden istediğiniz constant’ı seçersiniz. Tamamiyle sizin tercihiniz.

Constants ve Enumerations - XlRgbColor Enumeration    Daha önce defalarca kullandığımız renklerin sayı ihtiva eden birer constant olduğundan bahsetmiştik. İşte bu renk constant’ları XlRgbColor enumeration’ı üyeleridir. Eminim ki şimdiye kadar hiç renkleri XlRgbColor enumeration’ı ile beraber kullanmadığımızı fark etmişsinizdir.

     Enumerations kullanımı ve oluşturulması bu şekildedir. Constant gibi matematiksel hesaplamalarda da enumerations kullanabilirsiniz ancak enumerations’ın sadece Long veri tipinde değerler aldığını aklınızdan çıkartmayınız. 

İyi çalışmalar…

    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.

İyi Çalışmalar…

Soru ve Önerileriniz İçin;

macro[email protected]