Değişken Veri Tipleri

Excel vba değişken tanımlarken kullanılan veri tipleri aşağıdaki tabloda yer almaktadır.

Excel vba değişken tanımlarken Dikkat edilecek hususlar ve Değişken Boşaltma konusu tablonun altında yer almaktadır.

Değişken
Adı
Veri
Tipi
Değer
Aralığı
Depolama
Boyutu
VBA
Sabiti
Tip Bildirim
Karakteri
Dönüştürme
Sabiti
Byte Tam Sayı 0 ile 250 1 bayt vbByte CByte
Integer Tam Sayı -32.768 ile 32.767 2 bayt vbInteger % CInt
Long Tam Sayı -2.147.483.648 ile 2.147.483.647 4 bayt vbLong & CLng
LongPtr Tam Sayı 32 Bit Sistemlerde
-2.147.483.648 ile 2.147.483.647
4 bayt CLngPtr
64 Bit Sistemlerde
-9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807
8 bayt
LongLong Tam Sayı Sadece 64 Bit Sistemler için
-9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807
8 bayt vbLongLong ^ CLngLng
Currency Ölçeklendirilmiş
Tam Sayı
-922.337.203.685.477,5808 ile 922.337.203.685.477,5807 8 bayt vbCurrency @ CCur
Currency (Para Birimi), ondalık noktanın solunda 15 basamak ve sağında 4 basamak olmak üzere sabit noktalı bir sayı.
para içeren hesaplamalar ve doğruluğun özellikle önemli olduğu sabit noktalı hesaplamalar için kullanışlıdır.
Single Tek Duyarlıklı
kayan noktalı sayı
Negatif Sayılar İçin
-3,402823E38 ile -1,401298E-45
4 bayt vbSingle ! CSng
Pozitif Sayılar İçin
1,401298E-45 ile 3,402823E38
Single 7.hanesine kadar hassas olup daha uzun sayılar yuvarlatılır.
Örnek 1.234.567,95 sayısını 1.234.568 sayısına yuvarlar. Küçük Hassaslık beklenmeyen Ondalıklı Sayılarda Kullanılabir.
Hassasiyet ondalıkla alakalı değil 8 haneli tam sayıda yazılsa 8 inci haneyi yuvarlayarak 7 inci haneye kadar yazar
Double Çift Duyarlıklı
kayan noktalı sayı
Negatif Sayılar İçin
-1,79769313486231E308 ile -4,94065645841247E-324
8 bayt vbDouble # CDbl
Pozitif Sayılar İçin
4,94065645841247E-324 ile 1,79769313486232E308
Duble 15.hanesine kadar hassas olup daha uzun sayılar yuvarlatılır. Örnek 123.456.789,999999 sayısını 123.456.790 sayısına yuvarlar.
12.34.567.891.234.567 sayısını 1,23456789123457E+15 şeklinde gösterir.
Bu Sayıyı İkiye Böldüğümüzde 617.283.945.617.283,5 Yerine 617.283.945.617.284 şeklinde gösterir Single 6,17284E+14 şeklinde gösterir
Decimal Ondalıklı Sayı ondalık basamağı olmayan sayılar için
+/-79.228.162.514.264.337.593.543.950.335
14 bayt vbDecimal CDec
Ondalıklı Sayılar İçin
+/-7,9228162514264337593543950335
Decimal 28.hanesine kadar hassas olup daha uzun sayılar yuvarlatılır.
Decimal türünde bir değişken bildiremezsiniz. DefDec de Kullanılmıyor.
Variant değişkeni ile tanımladıktan sonra CDec tür değiştirme işlevi ile alt türü Ondalık olan bir Variant oluşturabilirsiniz.
Mecbur kalmadıkça kullanmayın excelde ondalık değişkeniler içinde en Kullanışlışı double dir.
Boolean Mantıksal True ve ya False 2 bayt vbBoolean CBool
Sayılar Boolean değerlerine dönüştürüldüğünde, 0 False olur ve diğer tüm değerler True olur.
Boolean değerleri diğer veri türlerine dönüştürüldüğünde, False 0 olur ve True -1 olur.
Date Tarih 1 Ocak 100 - 31 Aralık 9999
0:00:00 - 23:59:59
8 bayt vbDate CDate
String Metin Değişken uzunluktaki bir Metin
2 milyara kadar karakter içerebilir.
Değişken uzunluklu
10 bayt + Metin uzunluğu
vbString $ CStr
Sabit uzunlukta ki bir Metin
1 ila yaklaşık 65.400 karakter içerebilir.
Değişken uzunluklu
Metin uzunluğu
Değişken uzunlukta ki String Dim Metinadı As String şeklinde tanımlanır
Sabit uzunlukta ki String Dim Metinadı As String*7 şeklinde tanımlanır
Metinimiz 3 karakter den oluşuyorsa bu boşluklarla 7 karaktere tamamlanır. 9 karakterse 7 karakteri alınır 2 karakter alınmaz.
Değişken uzunlukta böyle birşey yoktur 3 karakter se 3 karakter olarak kabul edilir.
Variant Metin Değişken uzunluklu String ile aynı aralık 22 bayt + dize uzunluğu
(64 bit sistemlerde 24 bayt)
vbVariant CVar
Sayı Double aralığına kadar herhangi bir sayısal değer 16 bayt
Object Nesne Herhangi bir Nesne referansı 4 bayt vbObject
User-
defined
Nesne Her öğenin aralığı,
veri türünün aralığıyla aynıdır.
Elemanların
gerektirdiği sayı
vbUserDefinedType

 

Excel vba kod yazarken değişken tanımlamayı zorunlu kılmaz. Değişken tanımlamayı otomatik olarak zorunlu hale getirmek istiyorsak, Visual Basic Editörün de sırası ile Tools – Options'da   Reguire Variable Declaration seçeneğini işaretleyin. Bu şekilde Her yeni modül ve ya UserForm oluşturduğumuz da Kod bölümümüzün en üstünde Option Explicit kodu yer alacaktır. Tanımlanmayan değişken olduğunda Compile Error: Variable not defined Hata Mesajı ile karşılaşırız.

Değişken bildirmemenin bir çok olumsuz yönü vardır öne çıkan olumsuz yönü matamatiksel hesaplarda doğru sonuca ulaşmamızı engeller.

Bir Visual Basic modülünde yordamları , sabitleri , değişkenleri ve bağımsız değişkenleri adlandırırken aşağıdaki kuralların göz önünde bulundurulması gerekir:

  • Değişken isminin ilk karakteri hafr olmalıdır.
  • Değişken isminde boşluk bulunmaz. Bunun yerine alt çizgi karakteri kullanılabilir.
  • Değişken isminde nokta ( . ), ünlem işareti ( ! ) veya @ , & , $ , # karakterlerini kullanamazsınız.
  • Değişken isminde sadece harfler, rakamlar ve alt çizgi karakteri bulunabilir.
  • Visual Basic'te veya ana bilgisayar uygulaması tarafından kullanılan işlev, deyim, yöntem ve içsel sabit adları kullanmamalısınız.
  • Değişken ismi 255 karakteri aşamaz.

Değişkenlerin Kapsama Alanı ve Ömrü

VBA'da kodlama yaparken, bilgileri depolamak için değişkenleri kullanabiliriz. Bu değişkenler (adından da anlaşılacağı gibi) farklı veri bilgilerini depolamak için değiştirilebilir. Bir değişken kapsamını kaybettiği anda saklanan değerini kaybeder.

Excel VBA Değişken Düzeyleri

Değişkenleri boyutlandırabileceğimiz (Dim) 3 seviye vardır. Bu seviyelerin her biri kapsam ve yaşam süresi bakımından farklılık gösterir. Bunlar;

  • Prosedür Seviyesi
  • Modül Seviyesi
  • Proje Seviyesi, Çalışma Kitabı Seviyesi veya Genel Modül Seviyesi
  • Prosedür Düzeyinde Değişkenler

    Bu değişkenler; muhtemelen en iyi bilinen ve yaygın olarak kullanılan değişkenlerdir. Prosedürün kendi içinde bildirilmiştir.

    Sub Makrom ()
         Dim lngSayi as Long
    		'Kodlar
    End Sub
    

    Makrom Prosedürü içinde bildirilen lngSayi değişkeni, yanlızca Makrom prosedür içinde kullanılabilir ve Makrom prosedürü bittiği anda değişken bellekten silinir. Kapsama alanı Makrom Prosedürüdür ve yaşam süresi de Makrom Prosedürünün çalıştığı kadardır. Bu sebepten değişken boşaltma veya sıfırlama gibi işlemlere gerek yoktur.

     

    Modül Düzeyinde Değişkenler

    Bu değişkenler; herhangi bir Özel veya standart Genel Modülün en üstünde, Prosedürün kendisinin dışında bildirilen değişkenlerdir.

    Private lngSayi as Long
    
    Sub Makrom ()
         
    		'Kodlar
    End Sub
    

    Prosedür dışında bildirilen lngSayi değişkeni, Bildirildiği modülün tüm prosedürlerinde kullanılabilir. Kapsama alanı sadece bildirildiği modül içindedir ve yaşam süresi userform da userform kapanana kadar genel modül ise de End kodu varsa End koduna kadar yaşamını sürdürür. Kullanım amacına göre belleği yormamak adına gerekli yerlerde değişken sıfırlama yapılabilir.

     

    Proje Seviyesi, Çalışma Kitabı Seviyesi veya Genel Modül Seviyesi

    Bu değişkenler; sadece Standart Genel Modülün en üstünde bildirilen değişkenlerdir.

    
    Public lngSayi as Long
    
    

    Bu değişkenler, projemizin tüm modüllerinde ve prosedürlerinde kullanılabilir. Kapsama alanı projemizin tüm prosedürleri yaşam süresi çalışma kitabı kapatılana kadar veya End koduna kadar yaşamını sürdürür. Kullanım amacına göre belleği yormamak adına gerekli yerlerde değişken sıfırlama yapılabilir.

    Bu değişkenler, başka çalışma kitaplarında da kullanılablir. Başka çalışma kitaplarında kullanılmasını istemiyorsak Standart Genel Modülün en üstüne Option Private Module ifadesini ekleyerek modülü bulunduğu projeye özel kılabiriz. Böylece bu modüldeki değişkenler başka projede gözükmez. Extra olarak, Excelin makro görüntüle kısmındaki listede bu modüldeki makrolar listelenmez ve görünmez.

    Değişken Temizleme

    Yukarıda değişkenlerin kapsama alanları ve yaşam sürelerini yazmıştık bunların Öncesinde yapılan Emty, Nothing, vbNullString gibi atamalar yalnızca değerini değiştirir. Değişkenleri boşaltma(temizleme) işlemi değişkeni bellekten silmez ama değişkenin başlangıç durumuna dönmesini(sıfırlanmasını) sağlar bu da bellekte daha az yer kaplamasına yarar.

    sayıDeğişkeni = Empty
    metinDeğişkeni = vbNullString Set objectDeğişkeni = Nothing     (Range,Object,Workbook,Worksheet) gibi değişkenler
    Erase dizideğişkeni     (Dim Dizi(1 to 30) as Long)

    Yorumlar

    Bu blogdaki popüler yayınlar

    TextBox'ta Sadece Rakam

    Stok Takip Programı Excel Vba

    KeyAscii