VBA veri türleri değişkenin derleyici depolama boyutunu gösterir. Veri türleri yerleşik VBA'dır. VBA'da, çeşitli veri türlerini depolamak için sıklıkla değişkenleri kullanmamız gerekir. Herhangi bir değişkene bir değer depolamadan önce, bir değişkenin ne tür bir değer tutabileceğinden emin olmamız gerekir.
Bir değişkenin tutabileceği veri türü, değişkeni bildirirken değişkene atanan veri türüne bağlıdır. Örneğin, değişkenin tam sayı tutmasını istediğinizi varsayalım. Bu durumda, değişken için veri türünü "Integer" olarak atayabiliriz ve benzer şekilde, değişkenin metin değeri tutmasını istiyorsak, "String" veri türünü atayabiliriz.
Şimdi VBA'da bulunan çeşitli veri tiplerini göreceğiz.
ÖNEMLİ NOKTALAR
- Değişkenin derleyici depolama boyutunu göstermek için VBA veri tipi kullanılır.
- Değişkenlere veri tipini atayarak değişkenin belirli değerleri tutmasını sağlayabiliriz.
- Veri tipleri sayısal ve sayısal olmayan olmak üzere iki farklı kategoriye ayrılır.
- Değişkenleri iki şekilde tanımlayabiliriz; Açıkça ve Kapalı olarak.
- Unutmayın, sabit değişkenlere bir değer atandıktan sonra değerlerini değiştiremeyiz.
- Değişken bildirimini, explicit statement seçeneğini aktifleştirerek zorunlu hale getirebiliriz.
VBA'da Veri Türlerinin Türleri
VBA'da birçok değişken çeşidimiz var. Şimdi, daha iyi anlaşılması için bunları iki bölüme ayırdık, yani Sayısal Veri Türleri ve Sayısal Olmayan Veri Türleri.
1 – Sayısal Veri Türleri
Bu kategori çeşitli sayısal veri türlerini tutabilen 7 tür veri türü içerir. Aşağıda sayısal veri türleri verilmiştir.
- Bayt – Bir bayt değişken veri türü yalnızca 0 ila 255 arasındaki değerleri tutabilir, dolayısıyla belleğin yalnızca bir baytını kaplar. Bu veri türüne hiçbir negatif değer atanmasına izin verilmez ve 255'ten büyük pozitif sayıların atanmasına da izin verilmez. Aşağıda bayt veri türünü atamak için örnek kod bulunmaktadır.
- Dim X as Byte
- Integer – Bu veri türü, -32768 ile 32767 arasında hem pozitif hem de negatif sayılar atamamıza olanak tanır. Bu veri türüne sıfır bile atanabilir. Bu veri türü için tüketilen bellek 2 türdür. Aşağıda Integer veri türünü atamak için örnek kod bulunmaktadır.
- Dim X as Integer
- Dim X as Long
- Decimal – Bu, hassasiyeti için kullanılan sayısal veri türüdür. Ondalık basamağın sağındaki toplam basamak sayısı 28'dir ve buna ölçekleme faktörü denir. Bu veri türü 14 bayt bellek tüketir.
- Dim X as Decimal
- Single – Bu veri türü, tek hassasiyetli kayan noktalı sayısal değerleri depolamak için kullanılır. Bu, iki tür değeri tutabilir ve bunlar şunlardır:
- Negatif değerler için 3.402823E38 ila -1.401298E-45.
- Pozitif değerler için 1.401298E-45 ila 3.402823E38.
Bu veri türü 4 bayt bellek kaplar. Veri türünü değişkene iki şekilde atayabiliriz:
- Dim X as Single
VEYA
- Dim X!
Görüldüğü gibi değişken ismi olan “X”ten sonra ünlem (!) işaretini ekledik ve bu veri tipinin “Single” olduğunu gösteriyor.
- Double – Bu veri türü, sayısal değerleri çift hassasiyetli kayan nokta ile depolamak için kullanılır. Bu, aşağıdaki gibi iki tür değeri tutabilir:
- Negatif değerler için -1.79769313486231E308 ila -4.94065645841247E-324.
- Pozitif değerler için 4.94065645841247E-324 ila 1.79769313486232E308.
Bu veri türü 8 bayt bellek kaplar. Veri türünü değişkene iki şekilde atayabiliriz:
- Dim X as Double
VEYA
- Dim X#
Görüldüğü gibi değişken adı “X”ten sonra Hash (#) sembolünü ekledik ve bu veri tipinin “Double” olduğunu gösteriyor.
- Currency – Bu veri türü, sağda 15 basamaklı sayıları ve ondalık noktadan sonra 4 basamağı depolamak için kullanılır. Bu veri türü hem pozitif hem de negatif sayıları kabul eder. Bu, 8 bayt bellek tüketir.
- -922.337.203.685.477,5808 ile 922.337.203.685.477,5807 arası.
Şimdi değişkeni iki şekilde tanımlayabiliriz:
- – Dim X as Currency
VEYA
- Dim X@
Burada değişken isminin sonuna (@) sembolü koyarak bunun bir Currency veri tipi olduğunu belirttik.
2 – Sayısal Olmayan Veri Türleri
Bu kategori ayrıca 7 farklı türde sayısal olmayan değer içerir. Bunlar Metin, Tarih, Dize vb.'dir.
- Boolean – Bu veri türü yalnızca mantıksal değerleri tutar, yani TRUE veya FALSE. Burada, TRUE yerine 1 verebiliriz ve FALSE yerine 0 verebiliriz. Bu veri türü 2 bayt bellek kaplar.
- Tarih [Date]– Bu veri türü, değişkenlere tarih ve saat değerleri atamak için kullanılır. Unutmayın, tarih değerleri 01 Ocak 100 ile 31 Aralık 9999 arasında, saat değerleri ise 00:00:00 ile 23:59:59 arasında değişir.
- Dim X as Date
- Dize (Sabit Uzunluk) – Bu veri türü, bir karakter dizisini depolamak için kullanılır. Bu dizi metin, sayılar, özel karakterler vb. olabilir. Ancak dize uzunluğu 1 ila yaklaşık 65.400 karakter aralığıyla sınırlıdır.
- Dize (Değişken Uzunluk) – Bu veri türü, 0 ila 2 milyar aralığında bir dize değerini depolamak için kullanılır. Bu arada, bu 10 bayt bellek kaplar.
- Not: Dize değeri yalnızca çift tırnak içinde verilmelidir.
- Dim X as String
- Nesne – Bu veri türü, çalışma sayfaları, çalışma kitapları, hücreler, aralıklar, grafikler vb. gibi nesne referanslarını alır. Aşağıdaki kod, çalışma sayfası nesne veri türüdür.
- Dim X as Worksheet
- Variant – Bu evrensel bir veri türüdür. Ayrıca, değişkenimizin ne tür veri tutacağından emin olmadığımızda da kullanabiliriz. Bu veri türü, şu ana kadar tartışılan diğer veri türlerinden daha fazla bellek depolama alanı kaplar. Bu arada, bir veri türü atamadığımızda varsayılan olarak veri türü olarak variant alır.
- Dim X as Variant
- Dim X
VBA'da Değişken Veri Türlerini Bildirme
VBA'da değişken tanımlamanın iki yolu vardır: Açık ve örtük.
- Kapalı olarak: Bu yöntemde, değişkenleri tanımlamamız ve onlara bir veri türü atamamız gerekmez. Şimdi, sadece değişken adını girip ona herhangi bir değer atarız. Örneğin, aşağıdaki koda bakın.

Sonra, "Myvalue" değişkeni için "Hi" değerini atadık. Benzer şekilde, herhangi bir veri türüne atanan değeri sınırlamadığımız için ona herhangi bir değer atayabiliriz.
Yani, bir değişkeni tanımlamanın örtük yolu, değişkene hiçbir bildirim yapılmaması ve hiçbir veri türünün uygulanmamasıdır.
- Açıkça: Bu yöntemde, değişkene bir değer atamadan önce, ilk olarak bu değişkene bir veri türü tanımlayıp atarız. Örneğin, aşağıdaki koda bakın.

Şimdi, değişkeni "Dim" anahtar sözcüğünü kullanarak tanımladık ve ardından ona "Date" veri türünü atadık. Bu, herhangi bir değer türünü atayabildiğimiz önceki yöntemlerden farklı olarak, bu değişkene yalnızca tarih değerleri depolayabileceğimiz anlamına gelir.
Ancak tarih haricinde herhangi bir değer atarsak aşağıdaki hatayı alırız.

Şimdi değişkene “Hi” değerini atadığımız için “Tür uyuşmazlığı” hatasını alıyoruz.
Değişken Beyanını Zorunlu Hale Getirme (Seçenek Açık)
VBA'da Option Explicit, değişken bildirimini zorunlu hale getirmek için modülün en üstünde kullanabileceğimiz ifadedir, yani kodlayıcıyı değişkeni açıkça bildirmeye zorlar, böylece değişken bildiriminin örtük bir yoluna izin verilmez.

Şimdi, “Option Explicit” ifadesini varsayılan olarak almak için, VBA penceresindeki varsayılan ayarları değiştirmemiz gerekiyor.
Öncelikle Araçlar çubuğuna gidin ve ardından Seçenekler'e tıklayın .

Şimdi karşımıza aşağıdaki Seçenekler penceresi gelecektir.
Daha sonra Değişken Bildirimi Gerektir kutusunu işaretleyin .

Daha sonra Tamam’a tıklayarak Seçenekler penceresini kapatın .
Bu, en üste Option Explicit satırını ekleyecek ve sadece bu satırdan sonraki kodları yazmamız ve artık değişkeni zorunlu olarak bildirmemiz gerekiyor.
Not: Bu, Option Explicit'i mevcut modüle eklemez . Yalnızca yeni modüller bu ifadeye sahip olacaktır. Mevcut tüm modüllerin manuel olarak eklenmesi gerekir.
Örneğin, değişkeni açıkça tanımlamayalım ve değeri değişkene dolaylı olarak atamaya çalışalım.

Yukarıdaki kodda, “Myvalue” değişkenini açıkça tanımlamadık ancak ona değer atadık ve en üstte “Option Explicit” ifadesine sahibiz.
Değişkene değer atarken bu hatayı almayız ancak çalıştırma anında “Değişken tanımlanmadı” şeklinde “Derleme Hatası” alırız.
Excel VBA'da Sabitleri Bildirme
VBA'da, "Const" kelimesini kullanarak değişkeni sabit olarak bildirebiliriz. Sabiti kullanarak değişkenin değerini düzeltebiliriz ve kod sırasında değişkenin değerini gerçekten değiştiremeyiz.
Örneğin aşağıdaki VBA koduna bakın .

- Değişkeni tanımlamak için Dim kelimesi yerine Const kelimesini kullandık .
- Değişkene bir isim verdik.
- Değişkene Date veri türünü atadık .
- Değişkene bir değer atamak için eşittir işaretini girdik.
- Değişkene atanan veri tipine göre değer atadık.
Değişkene bir kez değer atandıktan sonra, kod boyunca değişkenin değerini değiştiremeyiz.
Örnekler
Örnek 1 – Veri Türüyle Taşma Hatası
Şimdiye kadar öğrendiğimiz gibi, birçok veri türümüz var ve gereksinime göre, veri türlerini değişkenlere atayabiliriz. Ancak, veri türü ve atanan değerler doğru olmadığında, çeşitli hatalar alırız ve bu hatalardan biri de Overflow Error'dur .
Örneğin aşağıdaki koda bakalım.
Sub Example1()
Dim k As Byte
k = 300
MsgBox kEnd Sub
Daha sonra, k değişkenine Byte veri türünü atadık . Şimdi, bu değişken için 300 değerini sakladık.
Şimdi kodu çalıştıralım ve ne olacağını görelim.

Açıkça, Taşma hatası aldık .
Bunun nedeni, Byte veri tipinin sadece 0 ile 255 arasındaki değerleri tutabilmesi ve saklanan değerin 300 olması ve bu değerin byte veri tipinin kapasitesinin ötesinde olması, dolayısıyla taşma hatasının alınmasıdır.
Örnek 2 – Boole Veri Türü
Bildiğimiz gibi, Boolean veri türü TRUE (1) veya FALSE (0) depolamak için kullanılır. Şimdi, Boolean veri türü hakkında daha fazla bilgi edinmek için aşağıdaki koda bakalım.
Sub Example2()
Dim k As Boolean
k = 20
MsgBox kEnd Sub
Şimdi bu kodu çalıştıralım ve ne olacağını görelim.


Sonucun DOĞRU olduğunu açıkça görebiliyoruz.
Bu arada bunun sebebi Boolean veri tiplerinde; 0'dan büyük her değer TRUE, 0 ise FALSE olarak değerlendirilir.
Örnek 3 – Nesne Veri Türü
Nesne veri türleri “Çalışma Sayfaları, Çalışma Kitapları, Grafikler, Hücreler, vb…”dir. Şimdi, bu nesne değişkenlerini bu nesneye başvurmak için kullanabiliriz.
Örneğin aşağıdaki koda bakın.
Sub Example3()
Dim Ws As Worksheet
Set Ws = Worksheets("Basic")
Ws.SelectEnd Sub
Şimdi “Ws” değişkenini tanımladık ve ona “Worksheet” nesne veri türünü atadık.
Daha sonra, nesne değişkenini kullandığımızda, ona bir nesne atamak için “Set” anahtar sözcüğünü kullanmamız gerekir.
Daha sonra “Set” anahtar sözcüğünü kullanarak çalışma kağıdına “Basic” atamış olduk.
Artık "Temel" çalışma sayfasıyla bir şey yapmak istediğimizde, bu değişkeni kullanıp işlemleri gerçekleştirebiliriz.
Burada “Basic” çalışma sayfasını seçmek için “Ws.Select” kodunu yazdık.

Dikkat Edilmesi Gereken Önemli Noktalar
- Değişkeni “Dim” anahtar sözcüğünü kullanarak tanımlamamız gerekiyor ve “Dim” “Boyut” anlamına geliyor.
- Option explicit ifadesi modülün en üstünde yer almalı ve bu ifadeden sonra sadece kodlar gelmelidir.
- Mevcut modüller, değişiklik yaptığımız anda option explicit ifadesini hemen almayacaklardır, bu yüzden en üste "Option Explicit" ifadesini manuel olarak eklememiz gerekiyor.
- Nesne değişkenleri, değişkenlere nesne değerleri atamak için “Set” anahtar sözcüğünü gerektirir.
- Değişkenlere isim verirken özel karakter kullanamayacağımızı unutmayın.
- Ayrıca değişken isminin ilk karakteri bir alfabe olmalıdır.
Sayısal olmayan veri türleri şunlardır:
Dize, Boolean, Tarih, Nesne ve Değişken.
Değişkene herhangi bir veri türü atamazsak, varsayılan olarak, veri türü olarak varyantı alacaktır. Dolayısıyla, değişkene herhangi bir varyant verisi atayabiliriz.
Değişkene atanan veri türünü bulmak için VBA işlevi “TypeName”i kullanabiliriz. Örneğin, aşağıdaki koda bakın.
Bu arada, yukarıdaki kodda TypeName fonksiyonunu kullandık. Ayrıca, bu fonksiyon için değişken adı olarak “k” ve bu değişken ID'ye atanan veri türünü “Boolean” olarak verdik. Yani, bu kodu çalıştırdığımızda, mesaj kutusunda “Boolean” veri türünü görmeliyiz.
VBA'da veri türlerini değiştirmek için aşağıdaki fonksiyonları kullanabiliriz.
• CBool – Bu veri türünü Boolean'a dönüştürecektir.
• CByte – Bu veri türünü Byte'a dönüştürecektir.
• CCur – Bu veri türünü Currency'ye dönüştürecektir.
• CDate – Bu veri türünü Date'e dönüştürecektir.
• CDbl – Bu veri türünü Double'a dönüştürecektir.
• CDec – Bu veri türünü Decimal'a dönüştürecektir.
• CInt – Bu veri türünü Integer'a dönüştürecektir.
• CLng – Bu veri türünü Long'a dönüştürecektir.
• CStr – Bu veri türünü String'e dönüştürecektir.
• CVar- Bu veri türünü Variant'a dönüştürecektir.
