Excel VBA Veri Türlerini (Değişkenler ve Sabitler) Anlama

Excel VBA'da genellikle değişkenleri ve sabitleri kullanmanız gerekir.

VBA ile çalışırken, değişken, bilgisayarınızın belleğinde veri depolayabileceğiniz bir konumdur. Bir değişkende saklayabileceğiniz veri türü, değişkenin veri türüne bağlı olacaktır.

Örneğin, bir değişkende tamsayıları saklamak istiyorsanız, veri türünüz 'Tamsayı' ve metin depolamak istiyorsanız veri türünüz 'Dize' olacaktır.

Bu öğreticide daha sonra veri türleri hakkında daha fazla bilgi.

Kod devam ederken bir değişkenin değeri değişirken, sabit, asla değişmeyen bir değeri tutar. İyi bir kodlama uygulaması olarak, hem değişken hem de sabit veri türünü tanımlamanız gerekir.

Neden VBA'da Değişkenler Kullanılır?

VBA'da kod yazarken, bir değeri tutmak için kullanabileceğiniz değişkenlere ihtiyacınız olacaktır.

Değişken kullanmanın faydası, kod içindeki değişkenin değerini değiştirip kodda kullanmaya devam edebilmenizdir.

Örneğin, ilk 10 pozitif sayıyı toplayan ve ardından sonucu bir mesaj kutusunda görüntüleyen bir kod aşağıdadır:

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 ila 10 k = k + i Next i MsgBox k End Sub

Yukarıdaki kodda üç değişken vardır - Var, ben, ve k.

Yukarıdaki kod, döngüler tamamlandıkça tüm bu üç değişkenin değiştirildiği For Next döngüsü kullanır.

Bir değişkenin kullanışlılığı, kodunuz devam ederken değiştirilebilmesi gerçeğinde yatmaktadır.

VBA'da değişkenleri adlandırırken akılda tutulması gereken bazı kurallar aşağıdadır:

  1. Harfler, sayılar ve noktalama işaretleri kullanabilirsiniz, ancak ilk sayı bir alfabe olmalıdır.
  2. Değişken adında boşluk veya nokta kullanamazsınız. Ancak, değişken adlarını daha okunabilir hale getirmek için bir alt çizgi karakteri kullanabilirsiniz (Faiz_Oranı gibi)
  3. Değişken adlarında özel karakterler (#, $, %, &, veya !) kullanamazsınız
  4. VBA, değişken adındaki durum arasında ayrım yapmaz. Yani 'Faiz Oranı' ve 'faiz oranı' VBA için aynıdır. Değişkenleri daha okunaklı hale getirmek için karışık harf kullanabilirsiniz.
  5. VBA, değişken adı için kullanabileceğiniz bazı ayrılmış adlara sahiptir. Örneğin, 'Next' kelimesini bir değişken adı olarak kullanamazsınız, çünkü bu For Next döngüsü için ayrılmış bir isimdir.
  6. Değişken adınız en fazla 254 karakter uzunluğunda olabilir.

Değişkenlerin Veri Türü

Değişkenlerden en iyi şekilde yararlanmak için değişkenin veri türünü belirtmek iyi bir uygulamadır.

Bir değişkene atadığınız veri türü, o değişkenin tutmasını istediğiniz veri türüne bağlı olacaktır.

Aşağıda, Excel VBA'da kullanabileceğiniz tüm mevcut veri türlerini gösteren bir tablo bulunmaktadır:

Veri tipi Kullanılan Bayt Değer aralığı
Bayt 1 bayt 0 - 255
Boole 2 bayt Doğru ya da yanlış
tamsayı 2 bayt -32.768 ila 32.767
Uzun (uzun tam sayı) 4 bayt -2.147.483.648 ila 2.147.483.647
Bekar 4 bayt negatif değerler için -3.402823E38 ila -1.401298E-45; Pozitif değerler için 1.401298E-45 ila 3.402823E38
Çift 8 bayt Negatif değerler için -1.79769313486231E308 - 4.94065645841247E-324; Pozitif değerler için 4.94065645841247E-324 ila 1.79769313486232E308
Para birimi 8 bayt -922.337.203.685.477.5808 - 922.337.203.685.477.5807
Ondalık 14 bayt +/-79,228,162,514,264,337,593,543,950.335 ondalık nokta olmadan;+/-7.9228162514264337593543950335 ondalık basamağın sağında 28 basamak ile
Tarih 8 bayt 1 Ocak 100 - 31 Aralık 9999
Nesne 4 bayt Herhangi bir Nesne referansı
Dize (değişken uzunluklu) 10 bayt + dize uzunluğu 0 ila yaklaşık 2 milyar
Dize (sabit uzunluklu) dize uzunluğu 1 ila yaklaşık 65.400
Varyant (sayılarla birlikte) 16 bayt Double aralığına kadar herhangi bir sayısal değer
Varyant (karakterlerle birlikte) 22 bayt + dize uzunluğu Değişken uzunluklu String ile aynı aralık
Kullanıcı tanımlı değişir Her öğenin aralığı, veri türünün aralığıyla aynıdır.

Kodunuzda bir değişken için bir veri türü belirlediğinizde, VBA'ya bu değişkeni nasıl depolayacağını ve bunun için ne kadar alan ayıracağını söyler.

Örneğin, ay numarasını tutması amaçlanan bir değişken kullanmanız gerekiyorsa, BYTE veri türünü kullanabilirsiniz (0 ile 255 arasındaki değerleri barındırabilir). Ay sayısı 12'nin üzerinde olmayacağı için bu iyi işleyecek ve bu değişken için daha az bellek ayıracaktır.

Aksine, Excel'de satır numaralarını saklamak için bir değişkene ihtiyacınız varsa, 1048756'ya kadar bir sayıyı barındırabilen bir veri türü kullanmanız gerekir. Bu nedenle, Uzun veri türünü kullanmak en iyisidir.

Değişken Veri Türlerini Bildirme

İyi bir kodlama uygulaması olarak, kodu yazarken değişkenlerin (veya sabitlerin) veri tipini bildirmelisiniz. Bunu yapmak, VBA'nın değişkene yalnızca belirtilen belleği ayırmasını sağlar ve bu, kodunuzun daha hızlı çalışmasını sağlayabilir.

Aşağıda, farklı değişkenlere farklı veri türleri bildirdiğim bir örnek verilmiştir:

Sub DeclaringVariables() Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

Değişken bir veri türü bildirmek için DIM ifadesini (Boyut'un kısaltması) kullanmanız gerekir.

İçinde 'Tamsayı olarak X Dim', X değişkenini Tamsayı veri türü olarak bildirdim.

Şimdi kodumda kullandığımda VBA, X'in yalnızca tamsayı veri türünü tutabileceğini bilirdi.

Tamsayı olmayan bir değer atamaya çalışırsam, bir hata alıyorum (aşağıda gösterildiği gibi):

Not: Veri türünü bildirmemeyi de seçebilirsiniz; bu durumda VBA, varyant veri türünün değişkenini otomatik olarak dikkate alır. Bir varyant veri türü, herhangi bir veri türünü barındırabilir. Bu uygun görünse de, varyant veri türünü kullanmak en iyi uygulama değildir. Daha fazla bellek kullanma eğilimindedir ve VBA kodunuzun daha yavaş çalışmasına neden olabilir.

Değişken Bildirimini Zorunlu Hale Getirme (Opsiyon Açık)

Değişken bildirmeden kod yazabilseniz de, bunu yapmak iyi bir uygulamadır.

Değişkenleri bildirmenin bellekten tasarruf etme ve kodunuzu daha verimli hale getirmenin yanı sıra başka bir önemli faydası daha vardır - yanlış yazılmış değişken adlarının neden olduğu hataları yakalamaya yardımcı olur.

Değişkenleri bildirmeye zorlandığınızdan emin olmak için modülünüzün en üstüne aşağıdaki satırı ekleyin.

Seçenek Açık

'Option Explicit' eklediğinizde, kodu çalıştırmadan önce tüm değişkenleri bildirmeniz istenecektir. Bildirilmemiş herhangi bir değişken varsa, VBA bir hata gösterecektir.

Option Explicit'i kullanmanın büyük bir faydası vardır.

Bazen bir yazım hatası yapabilir ve yanlış olan bir değişken adı girebilirsiniz.

Normalde, VBA'nın bunun bir hata mı yoksa kasıtlı mı olduğunu bilmesinin bir yolu yoktur. Ancak, 'Option Explicit' kullandığınızda, VBA yanlış yazılmış değişken adını bildirilmemiş yeni bir değişken olarak görür ve size bir hata gösterir. Bu, uzun bir kodda tespit edilmesi oldukça zor olabilen bu yanlış yazılmış değişken adlarını belirlemenize yardımcı olacaktır.

Aşağıda, 'Açık Seçenek' kullanmanın hatayı tanımladığı bir örnek verilmiştir ('Seçenek Açık'ı kullanmamış olsaydım kapana kısılamazdı)

Sub CommissionCalc() Dim CommissionRate As Double If Range("A1").Value > 10000 Then CommissionRate = 0.1 Aksi CommissionRtae = 0.05 End If MsgBox "Total Commission: " & Range("A1").Value * CommissionRate End Sub

Bu kodda bir kez 'CommissionRate' kelimesini yanlış yazdığımı unutmayın.

Açık Seçenek kullanmazsam, bu kod çalışır ve bana yanlış toplam komisyon değerini verir (A1 hücresindeki değerin 1000'den küçük olması durumunda).

Ancak modülün en üstünde Option Explicit kullanırsam, yanlış yazılan kelimeyi düzeltmeden veya başka bir değişken olarak bildirmeden önce bu kodu çalıştırmama izin vermez. Aşağıda gösterildiği gibi bir hata gösterecektir:

Her kod yazdığınızda 'Seçenek Açık' satırını ekleyebilseniz de, varsayılan olarak görünmesini sağlamak için gereken adımlar şunlardır:

  1. VB Editor araç çubuğunda, Araçlar'a tıklayın.
  2. Seçenekler'e tıklayın.
  3. Seçenekler iletişim kutusunda, Düzenleyici sekmesine tıklayın.
  4. Seçeneği işaretleyin - “Değişken Bildirimi Gerektir”.
  5. Tamam'ı tıklayın.

Bu seçeneği etkinleştirdikten sonra, yeni bir modül açtığınızda, VBA otomatik olarak 'Option Explicit' satırını ekler.

Not: Bu seçenek, yalnızca bu seçenek etkinleştirildikten sonra oluşturduğunuz tüm modülleri etkiler. Mevcut tüm modüller etkilenmez.

Değişkenlerin Kapsamı

Şimdiye kadar bir değişkenin nasıl tanımlanacağını ve ona veri tiplerinin nasıl atanacağını gördük.

Bu bölümde, değişkenlerin kapsamını ve yalnızca bir alt programda, tüm modülde veya tüm modüllerde kullanılacak bir değişkeni nasıl bildirebileceğinizi ele alacağım.

Bir değişkenin kapsamı, değişkenin VBA'da nerede kullanılabileceğini belirler,

Excel VBA'da bir değişkeni kapsama almanın üç yolu vardır:

  1. Tek bir alt program içinde (Yerel değişkenler)
  2. Bir modül içinde (Modül düzeyinde değişkenler)
  3. Tüm modüllerde (Genel değişkenler)

Bunların her birine ayrıntılı olarak bakalım.

Tek Bir Alt Program İçinde (Yerel Değişkenler)

Bir alt program/prosedür içinde bir değişken tanımladığınızda, bu değişken yalnızca o alt program için kullanılabilir.

Modüldeki diğer alt programlarda kullanamazsınız.

Alt program biter bitmez değişken silinir ve kullandığı bellek serbest bırakılır.

Aşağıdaki örnekte, değişkenler alt yordam içinde bildirilmiştir ve bu alt yordam sona erdiğinde silinecektir.

Bir Modül İçinde (Modül Düzeyinde Değişkenler)

Bir modüldeki tüm prosedürler için bir değişkenin kullanılabilir olmasını istediğinizde, onu modülün en üstünde (herhangi bir alt programda değil) bildirmeniz gerekir.

Modülün en üstünde tanımladığınızda, bu değişkeni o modüldeki tüm prosedürlerde kullanabilirsiniz.

Yukarıdaki örnekte, 'i' değişkeni modülün en üstünde bildirilmiştir ve tüm modüller tarafından kullanılabilir.

Alt program sona erdiğinde, modül düzeyindeki değişkenlerin silinmediğini (değerini koruduğunu) unutmayın.

Aşağıda iki kodum olduğu bir örnek var. İlk prosedürü çalıştırıp ikincisini çalıştırdığımda, 'i' değeri 30 oluyor (birinci prosedürden 10 değerini taşıdığı için)

Tüm Modüllerde (Genel Değişkenler)

Çalışma kitabındaki tüm prosedürlerde bir değişkenin kullanılabilir olmasını istiyorsanız, bunu Public anahtar sözcüğüyle (DIM yerine) bildirmeniz gerekir.

Modülün en üstündeki aşağıdaki kod satırı, çalışma kitabındaki tüm modüllerde 'CommissionRate' değişkenini kullanılabilir hale getirecektir.

 Kamu Komisyonu Oranı Çift Olarak

Değişken bildirimini (Public anahtar sözcüğünü kullanarak), modüllerden herhangi birine (herhangi bir prosedürden önce en üstte) ekleyebilirsiniz.

Statik Değişkenler (değeri koruyan)

Yerel değişkenlerle çalıştığınızda, prosedür biter bitmez değişken değerini kaybeder ve VBA'nın belleğinden silinir.

Değişkenin değeri korumasını istiyorsanız, Statik anahtar kelime.

Önce size normal bir durumda ne olduğunu göstereyim.

Aşağıdaki kodda, prosedürü birden çok kez çalıştırdığımda, her seferinde 10 değerini gösterecek.

Sub Yordam1() Dim i As Integer i = i + 10 MsgBox i End Sub

Şimdi, DIM yerine Statik anahtar sözcüğünü kullanırsam ve prosedürü birden çok kez çalıştırırsam, değerleri 10'luk artışlarla göstermeye devam edecek. Bu, 'i' değişkeni değerini koruduğu ve hesaplamada kullandığı için olur.

Alt Yordam1() Statik i As Integer i = i + 10 MsgBox i End Sub

Excel VBA'da Sabitleri Bildirmek

Değişkenler kod yürütme sırasında değişebilirken, sabit değerlere sahip olmak istiyorsanız sabitleri kullanabilirsiniz.

Sabit, kodunuzda kullanabileceğiniz adlandırılmış bir dizeye bir değer atamanıza olanak tanır.

Sabit kullanmanın yararı, kod yazmayı ve anlamayı kolaylaştırması ve tüm sabit değerleri tek bir yerden kontrol etmenize olanak sağlamasıdır.

Örneğin komisyon hesabı yapıyorsanız ve komisyon oranı %10 ise bir sabit (Komisyon Oranı) oluşturup ona 0,1 değerini atayabilirsiniz.

Gelecekte, komisyon oranı değişirse, değişikliği her yerde kodda manuel olarak değiştirmek yerine tek bir yerde yapmanız yeterlidir.

Aşağıda, sabite bir değer atadığım bir kod örneği verilmiştir:

Sub CalculateCommission() Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range("A1") * CommissionRate MsgBox CommissionValue End Sub

Sabiti bildirmek için aşağıdaki satır kullanılır:

Çift Olarak Const Komisyon Oranı = 0.1

Sabitleri bildirirken, ' anahtar kelimesiyle başlamanız gerekir.Sabit', ardından sabitin adı.

Bu örnekte sabitin veri türünü Double olarak belirlediğimi unutmayın. Yine, kodunuzun daha hızlı çalışmasını ve daha verimli olmasını sağlamak için veri türünü belirtmek iyi bir uygulamadır.

Veri türünü bildirmezseniz, değişken veri türü olarak kabul edilir.

Değişkenler gibi, sabitlerin de bunların nerede ve nasıl bildirildiğine bağlı olarak kapsamı olabilir:

  1. Tek bir alt program içinde (Yerel sabitler): Bunlar, bildirildiği alt program/prosedürde mevcuttur. Prosedür sona erdiğinde, bu sabitler sistemin belleğinden silinir.
  2. Bir modül içinde (Modül düzeyinde sabitler): Bunlar modülün en üstünde belirtilir (herhangi bir prosedürden önce). Bunlar modüldeki tüm prosedürler için mevcuttur.
  3. Tüm modüllerde (Genel sabitler): Bunlar, herhangi bir modülün en üstünde (herhangi bir prosedürden önce) 'Public' anahtar sözcüğü kullanılarak bildirilir. Bunlar, tüm modüllerdeki tüm prosedürlerde mevcuttur.

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

  • Excel'de Makro Nasıl Kaydedilir
  • Excel VBA'da Hücreler ve Aralıklarla Çalışmak
  • Excel VBA kullanarak Çalışma Sayfalarıyla Çalışmak
  • Excel VBA'da Çalışma Kitaplarıyla Çalışmak
  • VBA Olayları
  • Excel VBA Döngüleri
  • Excel'de Makro Nasıl Çalıştırılır
  • Excel VBA'da If Sonra Else İfadesi.

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

wave wave wave wave wave