Excel Makrolarında Değişkenleri ve Sabitleri Anlama

Bu makalede, makrolarda sabitlerin ve değişkenlerin neler olduğunu, nerede kullanılabileceğini ve farklı veri türleri arasındaki temel farkın ne olduğunu öğreneceksiniz. Ayrıca, sadece bir değişken yazıp onu asla değiştiremezseniz, sabitlere neden ihtiyaç duyulduğu da ortaya çıkacaktır.

Diğer programlama dilleri gibi, veriler de değişkenlerde veya sabitlerde saklanabilir (her ikisi de genellikle veri kapsayıcıları olarak adlandırılır). Bu kavramlar arasındaki temel fark budur. İlki, programda olanlara bağlı olarak değişebilir. Buna karşılık, sabitler bir kez ayarlanır ve değerlerini değiştirmezler.

Aynı büyük değeri birden çok kez kullanmanız gerekiyorsa, sabitler yararlı olabilir. Numarayı kopyalamak yerine, sabitin adını yazabilirsiniz. Örneğin, sabit bir değer olan Pi'yi saklamak için “Pi” sabitini kullanabilirsiniz. Çok büyüktür ve her seferinde onu yazmak veya aramak ve kopyalamak oldukça zordur. Ve böylece iki karakter yazmanız yeterlidir ve ortam otomatik olarak istenen sayıyı kullanır.

Excel kullanıcısının, zaman zaman içlerinde depolanan değeri değiştirmesi gerekiyorsa değişkenleri bildirmesi gerekir. Örneğin, ürün için geçerli KDV oranını depolayacak olan sVAT_Rate adlı bir değişken ayarlayabilirsiniz. Değişirse, hızlı bir şekilde düzeltebilirsiniz. Bu, özellikle bazı malların KDV'ye tabi olmadığı Amerika Birleşik Devletleri'nde iş yapanlar için yararlıdır (ve bu vergi de eyaletten eyalete farklılık gösterir).

Veri tipleri

Her veri kapsayıcısı birkaç türden biri olabilir. Burada standart işlenmiş bilgi türlerini açıklayan bir tablo bulunmaktadır. Birçoğu var ve başlangıçta birbirlerini tekrarladıkları yeni başlayanlara görünebilir. Ama bu hayali bir duygu. Doğru veri türünü belirtmenin neden bu kadar önemli olduğunu öğrenmek için okumaya devam edin.

Küçük sayılar için bellekte daha fazla yer kaplayan bir veri türünün kullanılması önerilmez. Örneğin 1 sayısı için Byte tipinin kullanılması yeterlidir. Bu, özellikle zayıf bilgisayarlarda yürütülebilir modülün performansı üzerinde olumlu bir etkiye sahip olacaktır. Ancak burada fazla ileri gitmemek önemlidir. Çok kompakt bir veri türü kullanırsanız, büyük boyutlu bir değer buna sığmayabilir.

Sabitleri ve Değişkenleri Bildirme

Bir veri kabının önceden bildirilmeden kullanılması kesinlikle önerilmez. Ardından, değişkenlerin veya sabitlerin numaralandırılmasıyla birkaç küçük kod satırı yazmanın gerekli olduğu bir dizi sorun ortaya çıkabilir.

Bir değişken bildirmek için Dim ifadesi kullanılır. Örneğin, bunun gibi:

Değişken_Adı Tamsayı Olarak Dim

Değişken_Adı, değişkenin adıdır. Ardından, veri türünü belirten As operatörü yazılır. “Değişken_Adı” ve “Tamsayı” dizeleri yerine kendi adınızı ve veri türünüzü girebilirsiniz.

Sabitler de bildirilebilir, ancak önce değerlerini belirtmeniz gerekir. Seçeneklerden biri:

Sabit iMaxCount = 5000

Dürüst olmak gerekirse, bazı durumlarda bir değişken bildirmeden yapabilirsiniz, ancak bu durumda bunlara otomatik olarak Variant türü atanacaktır. Ancak, bu aşağıdaki nedenlerden dolayı önerilmez:

  1. Varyant çok daha yavaş işlenir ve bu tür birçok değişken varsa, zayıf bilgisayarlarda bilgi işleme önemli ölçüde yavaşlayabilir. Bu saniyeler karar verecek gibi görünüyor? Ancak, çok sayıda kod satırı yazmanız ve ardından onu zayıf bilgisayarlarda çalıştırmanız gerekiyorsa (modern ofis paketlerinin çok fazla RAM gerektirdiği göz önüne alındığında, hala satılmaktadır), işi tamamen durdurabilirsiniz. Kötü tasarlanmış makro yazmanın, az miktarda RAM'i olan ve karmaşık görevleri gerçekleştirmek için tasarlanmamış akıllı kitapların donmasına neden olduğu durumlar vardır. 
  2. Adlardaki yanlış baskılara izin verilir; bu, eğer bulunursa bildirilmemiş bir değişken bulmanızı sağlayan Option Explicit deyimi kullanılarak önlenebilir. Bu, hataları tespit etmenin kolay bir yoludur, çünkü en ufak bir yazım hatası, yorumlayıcının değişkeni tanımlayamamasına neden olur. Değişken bildirim modunu açarsanız, yorumlayıcı, modülün en başında bildirilmeyen veri kapsayıcıları bulunursa, makroyu çalıştırmanıza izin vermez.
  3. Veri türüyle eşleşmeyen değişken değerlerinden kaynaklanan hatalardan kaçının. Normalde, bir tamsayı değişkenine bir metin değeri atamak bir hata verir. Evet, bir yandan, bir bildirim olmadan genel bir tür atanır, ancak önceden bildirilirse rastgele hatalardan kaçınılabilir.

Bu nedenle her şeye rağmen Excel makrolarında tüm değişkenleri bildirmeniz şiddetle tavsiye edilir.

Değişkenleri bildirirken akılda tutulması gereken bir şey daha var. Bir değişkeni bildirirken herhangi bir değer atamamak mümkündür ancak bu durumda varsayılan bir değer elde eder. Örneğin:

  1. Hatlar boş yapılır.
  2. Rakamlar 0 değerini alır.
  3. Boolean türündeki değişkenler başlangıçta yanlış olarak kabul edilir.
  4. Varsayılan tarih 30 Aralık 1899'dur.

Örneğin, daha önce herhangi bir değer belirtilmemişse, bir tamsayı değişkenine 0 değerini atamanız gerekmez. Bu numarayı zaten içeriyor.

Seçenek Açık Bildirimi

Bu ifade, VBA kodunda kullanılan tüm değişkenleri bildirmenize ve kod çalıştırılmadan önce bildirilmemiş kapsayıcıların varlığını belirlemenize olanak tanır. Bu özelliği kullanmak için, makro kodunun en üstüne bir Option Explicit kodu satırı yazmanız yeterlidir.

Bu ifadeyi her seferinde kodunuza eklemeniz gerekiyorsa, bunu VBA düzenleyicide özel bir ayar kullanarak yapabilirsiniz. Bu seçeneği etkinleştirmek için şunları yapmalısınız:

  1. Yol boyunca geliştirme ortamına gidin – Araçlar > Seçenekler.
  2. Bundan sonra açılan pencerede Editör sekmesini açın.
  3. Son olarak, Değişken Bildirimi Gerektir öğesinin yanındaki kutuyu işaretleyin.

Bu adımları tamamladıktan sonra “Tamam” butonuna tıklayın. 

İşte bu, şimdi her yeni makroyu yazarken, bu satır kodun en üstüne otomatik olarak eklenecek.

Sabitlerin ve Değişkenlerin Kapsamı

Her değişken veya sabitin yalnızca sınırlı bir kapsamı vardır. Nerede ilan ettiğinize bağlı.

Diyelim ki bir fonksiyonumuz var. Toplam tutar()ve değişkeni kullanır sVAT_Oranı. Modüldeki konuma bağlı olarak, farklı bir kapsamı olacaktır:

Seçenek Açıkça

sVAT_Oranını Tek Olarak Karart

Total_Cost() Fonksiyonu Çift Olarak

.

.

.

son İşlevi

Bir modülün en üstünde bir değişken bildirilirse, o modül boyunca yayılır. Yani her işlemle okunabilir.

Ayrıca, prosedürlerden biri değişkenin değerini değiştirmişse, sonraki işlem de bu düzeltilmiş değeri okuyacaktır. Ancak diğer modüllerde bu değişken hala okunmayacaktır.

Seçenek Açıkça

Total_Cost() Fonksiyonu Çift Olarak

sVAT_Oranını Tek Olarak Karart

   .

   .

   .

son İşlevi

Bu durumda, değişken prosedür içinde bildirilir ve başka bir prosedürde kullanılırsa yorumlayıcı bir hata verir.

Değişkenin diğer modüller tarafından okunmasını istiyorsanız Dim anahtar sözcüğü yerine Public anahtar sözcüğünü kullanmanız gerekir. Benzer şekilde, Dim kelimesi yerine yazılan Public deyimini kullanarak bir değişkenin kapsamını yalnızca geçerli modülle sınırlayabilirsiniz.

Sabitlerin kapsamını benzer şekilde ayarlayabilirsiniz, ancak buradaki anahtar kelime Const operatörü ile birlikte yazılır.

İşte sabitler ve değişkenlerle nasıl çalıştığına dair güzel bir örnek içeren bir tablo.

Seçenek Açıkça

Genel sVAT_Oranı Tek Olarak

Genel Sabit iMax_Count = 5000

Bu örnekte, bir değişkeni bildirmek için Public anahtar sözcüğünün nasıl kullanıldığını ve bir genel sabit bildirmek için Visual Basic düzenleyicisinde ne yazmanız gerektiğini görebilirsiniz. Bu değer kapsayıcılarının kapsamı tüm modüller için geçerlidir.
Seçenek Açıkça

Özel sVAT_Oranı Tek Olarak

Özel Sabit iMax_Count = 5000

Burada değişkenler ve sabitler Private anahtar sözcüğü kullanılarak bildirilir. Bu, yalnızca mevcut modül içinde görülebilecekleri ve diğer modüllerdeki prosedürler bunları kullanamayacakları anlamına gelir.

Sabitlere ve değişkenlere neden ihtiyaç duyulur?

Sabitlerin ve değişkenlerin kullanılması, kodun anlaşılırlık derecesini artırmanıza olanak tanır. Ve yeni başlayanların genel olarak değişkenlere neden ihtiyaç duyulduğuna dair soruları yoksa, sabitlere duyulan ihtiyaçla ilgili birçok belirsizlik vardır. Ve bu soru, ilk bakışta oldukça mantıklı görünüyor. Sonuçta, bir değişkeni bir kez bildirebilir ve bir daha asla değiştiremezsiniz.

Cevap, bellekte büyük yer kaplayan veri türlerinin kullanımına ilişkin olarak aynı düzlemde bir yerde olduğu ortaya çıkıyor. Çok sayıda değişkenle uğraşıyorsak, yanlışlıkla mevcut bir kapsayıcıyı değiştirebiliriz. Kullanıcı belirli bir değerin asla değişmeyeceğini belirtirse, ortam bunu otomatik olarak kontrol edecektir.

Bu, makro birkaç programcı tarafından yazıldığında özellikle önemlidir. Bazı değişkenlerin değişmemesi gerektiği bilinebilir. Ve diğeri değil. Const operatörünü belirtirseniz, başka bir geliştirici bu değerin değişmediğini bilecektir.

Veya tek bir ada sahip bir sabit varsa ve değişkenin adı farklı ancak benzerse. Geliştirici onları basitçe karıştırabilir. Örneğin, değiştirilmesi gerekmeyen bir değişkene Değişken11, düzenlenebilen bir başka değişkene Değişken1 adı verilir. Bir kişi kod yazarken otomatik olarak fazladan bir birimi yanlışlıkla atlayabilir ve bunu fark etmeyebilir. Sonuç olarak, dokunulmaması gereken değerler için kap değiştirilecektir.

Veya geliştiricinin kendisi hangi değişkenlere dokunabileceğini ve hangilerine dokunamayacağını unutabilir. Bu genellikle kod birkaç hafta boyunca yazıldığında ve boyutu büyüdüğünde olur. Bu süre zarfında, bu veya bu değişkenin ne anlama geldiğini bile unutmak çok kolaydır.

Evet bu durumda yorumlarla yapabilirsiniz ama Const kelimesini belirtmek daha kolay değil mi?

Sonuç

Değişkenler, hesaplamalardan kullanıcıyı belirli olaylar hakkında bilgilendirmeye veya bir elektronik tablonun hücrelerinde belirli değerleri belirlemeye kadar karmaşık işlemleri gerçekleştirmenize izin veren makro programlamanın önemli bir bileşenidir.

Geliştirici bu kapların içeriğinin gelecekte değişmeyeceğinden eminse sabitler kullanılmalıdır. Yanlışlıkla hata yapmak mümkün olduğu için bunun yerine değişkenlerin kullanılmaması önerilir.

Yorum bırak