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 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 = EmptymetinDeğ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
Yorum Gönder