Bu yazımızda sizlere VBA Değişken Tanımlama Biçimleri ‘ni anlatıyor olacağız. Değişkenler programcılığın temel öğelerinden biridir. Değişkenleri kullanmak ve yönetmek proje oluştururken olmazsa olmazlarımızdandır diyebiliriz. Olabildiğince sade biçimde sizlere anlatmaya çalışacağım. Hatırlatma: VBA ile ilgili diğer yazılarımızı da yine blog sayfamızda bulabilirsiniz. 👍🏻
VBA Değişken Tanımlama Biçimleri Hakkında
Değişkenler genellikle bir veriyi hafızada tutmak ve gerektiğinde bu veriyi kullanmak için vardır.
Değişkenler genelde iki sınıfa ayrılır. Global (Genel) değişkenler ve Local (Yerel) değişkenlerdir.
Global değişkenler programın bütün fonksiyonları tarafından kullanılabilirken, Local değişkenler sadece tanımlandıkları fonksiyonda kullanılır.
Bir prosedür, fonksiyon veya yürütülen bir modülün ömrü boyunca geri çağrılabilir, yeniden atanabilir veya sabitlenebilir.
Bir değişken bildirmek, kullanacağınız değişkenlerin adlarını ve değişkenin içereceği veri türünü belirtmenize olanak tanır.
Örneğin, Sonuç = 10 ise, değişken Sonuç bir Integer Tam sayı olarak bildirilebilir.
Değişken isimlerini genelde kısa ve akılda kalıcı bir biçimde oluştururuz. En çok tercih edilen değişken isimleri; i, a, n, x ,y ,z, s gibi tek karakterlik isimlerdir ki, kodlarda yazımı kolay olsun. Değişken adları kodlar içerisinde kullanırken hatırlayacağınız bir ad olursa, kod yazımı esnasında hata yapma olasılığınız azalır.
Şimdi tanımlama kısmına geçebiliriz.
Değişken tanımlama ile ilgili genel yazım kalıpları bu şekildedir.
Dim değişken_adı [(diziboyutu)] As tipi
Public değişken_adı [(diziboyutu)] As tipi
Static değişken_adı [(diziboyutu)] As tipi
Bu genel tanımlama ile beraber aşağıda belirtilen tanımlama yöntemleri de tercih edilebilir.
- Dim ile tanımlama
- Veri Tanımlayıcıları (Kısaltmalar) ile tanımlama
- DEF ile tanımlama
Dim ile Tanımlama
En çok bilinen ve kullanılan VBA Değişken Tanımlama yoludur.
Yazım kalıbını Syntax yukarıda belirttik. Tekrar birkaç örnekle netleştirelim.
Diyelim ki, A sütunundaki satırlarda (hücrelerde) kullanmak üzere satır adında bir değişken tanımlaması yapacağız, satır numaraları tam sayı oldukları için Veri Türleri makalemizde belirttiğimiz tam sayı veri tiplerinden birini kullanabiliriz. Kontrol ettireceğimiz satır sayısına veya hücrede olabilecek maksimum sayıya göre değişken veri tipini kullanmak daha uygun olacaktır. Sayısal ve Tam Sayı olarak kullanabileceğimiz, temelde uygun 3 değişken veri tipimiz var, Byte, Integer ve Long. Eğer satır değişkenine atayacağımız sayısal veri 255 ve daha az ise, o zaman hafızada daha az yer kaplayan Byte değişken veri tipini kullanabiliriz. Eğer satır değişkenine atayacağımız sayısal veri -32767 ile +32768 arasında ise, o zaman da Integer değişken veri tipini kullanabiliriz. Daha büyük bir Tam Sayı olabilir ise, o zaman da Long değişken veri tipini kullanmalıyız. Eğer değişkeninin alabileceği maksimum sayıdan daha büyük bir sayı gönderilirse Overflow (Taşma) hatası alınır. Eğer Sayısal olarak belirtilen bir değişkene Metinsel bir ifade gönderilirse, o zaman da Type Mismatch (Tür Uyuşmazlığı) hatası alınız.
Dim ile Değişken tanımlamaya birkaç örnek verelim;
Sub PEAKUP() Dim satir As Long Dim sutun As Byte Dim metin As String Dim baslangic As Date Dim para As Currency Dim nesne As Object satir = 15 sutun = 5 metin = "Excel Turkey Forum" baslangic = "24.06.2018" para = 300 Set nesne = ActiveSheet End Sub
Bu şekilde her bir değişkeni ayrı ayrı satırlarda yazabildiğimiz gibi, istersek tek bir satırda da bu şekilde yan yana yazabiliyoruz.
Sadece en başta Dim olması gerekiyor ve her bir değişken arasına virgül koyarak devam ediyoruz.
Sub PEAKUP() Dim satir As Long, sutun As Byte, metin As String Dim baslangic As Date, para As Currency, nesne As Object End Sub
Burada şuna dikkat etmek gerekiyor. Bazı kullanıcılar şurada yanılgıya düşüp yanlış bir tanımlama yapabiliyorlar.
Yukarıda yazdığım kodu eğer bu aşağıdaki gibi yazmaya kalkarsanız, yani Dim ile başlayıp ilk değişkeni tanımladım diyerek, devam eden yandaki değişkenleri de uygun değişken veri tipleri ile tanımlamış olmazsınız.. “sutun”, “metin” tanımlamalarında veri tipleri belirtilmediği için, Byte ve String değil, tanımsız veri tipi olan Variant olarak belirtilmiş olur. Dim ile tanımladığım ilk değişkende veri tipi belirttiğiniz için, devamında gelen diğer değişkenleri de tanımlamış olmuyorsunuz, her bir değişenin ayrı ayrı tipini de belirtmelisiniz.
Veri Tanımlayıcıları (Kısaltamalar) ile tanımlama
Abbreviations (Kısaltmalar)
Tür Bildirim son ekleri olarak da bilinir.
Bu çok fazla kullanılmaz ama kodlarda tasarruf sağlar.
VBA’ya değişken adının sonuna özel bir karakter ekleyerek bir değişken türünü söylemek de mümkündür.
Dim sayi% 'Integer Dim uzunsayi& 'Long Dim toplam! 'Single Dim alttoplam# 'Double Dim odeme@ 'Currency Dim adi$ 'String Dim enuzunsayi^ ' 64 bit'te LongLong
Veri Türü Kısaltması İfade Karakterleri
VBA
, veri türünü belirtmenin hızlı bir yolu olarak, bir değişkenin adına bir karakter eklemenize izin verir.
Değişkenleri bildirmek için bu yöntem kullanılmamalıdır ve yalnızca geriye dönük uyumluluk amacıyla kullanılabilir.
Aşağıdaki satır bir Double veri türü ile bir değişken bildirecektir.
Dim dDouble#
Ancak bu satır “As” anahtar sözcüğünü kullanarak bildirilmesi daha doğru olur.
Dim dDouble As Double
Veri Türü Kısaltmalar / Son Ekler
Eğer kısaltmaları kullanırsanız, o zaman türü bildirmek zorunda değilsiniz.
% ifadesini kullanırsanız, “As Integer” yazmanız gerekmez.
Bu kısaltmalar, Variant‘lara hazır bilgi atamak için yararlı olabilir.
Örnek; sayim = 10#
DEF ile Tanımlama
Değişkenlerimizi belirttiğimiz gibi birkaç farklı yöntemle tanımlayıp bildirebiliyorduk, bu yöntemlerden biri de DEF ile tanımlama.
Bu tanımlama genellikle kod penceresinin en üstünde prosedürden bağımsız olarak yapılır.
Değişken olarak kullandığımız isim ve veri tipini aşağıdaki gibi kısaltarak tanımlamasını yapabiliyoruz.
Def+Tür ‘den sonra gelen harf ile başlayan değişkenlerin o türde olduğunu ifade eder.
Def ile tanımlamaya Dim ile arasındaki farkı gösteren bir örnek verelim..
Öncelikle Dim ile değişkenlerimizi bu şekilde tanımlayalım.
Sub PEAKUP() Dim satir As Integer, sutun As Integer Dim metin As String, harf As String, kelime As String Dim tarih As Date, baslangic As Date Dim rakam As Double, fiyat As Double satir = 10 sütun = 5 metin = "PEAKUP" harf = "E" kelime = "Kitap" tarih = "24.06.2018" baslangic = "14.12.1980" rakam = 1453.48 fiyat = 5647.15 End Sub
Şimdi bu tanımlamayı bir de Def ile yapalım.
DefInt S DefStr H, K, M DefDate B, T DefDbl F, R Sub PEAKUP() satir = 10 sütun = 5 metin = "PEAKUP" harf = "E" kelime = "Kitap" tarih = "24.06.2018" baslangic = "14.12.1980" rakam = 1453.48 fiyat = 5647.15 End Sub
Gördüğünüz gibi sadece baş harflerini kullanarak türünü belirtip değişken tanılaması yapmış olduk.
Bu noktada değişken tanımlamaları fazla yer kaplamasın ve daha az satırda görünsün isterseniz, Aşağıda belirtildiği gibi Def satırlarını iki nokta üst üste ( : ) ile tek satırda yan yana yazabilirsiniz.
DefInt S: DefStr H, K, M: DefDate B, T: DefDbl F, R Sub PEAKUP() satir = 10 sütun = 5 metin = "PEAKUP" harf = "E" kelime = "Kitap" tarih = "24.06.2018" baslangic = "14.12.1980" rakam = 1453.48 fiyat = 5647.15 End Sub
Bu arada tüm değişken isimlerini, değerlerini ve türlerini Locals Window‘dan kolaylıkla takip edebilir ve değerlendirebilirsiniz.
Daha fazla detay için Microsoft Docs sayfasına bakabilirsiniz.
Diğer yazılarımızda görüşmek üzere, hoşça kalın. 🙋🏻♂️
Bu yazımızı çevrenizle paylaşarak birçok kişinin de bilgi sahibi olmasını sağlayabilirsiniz. 👍🏻