Skip to content

VBA Değişken Tanımlama Biçimleri

VBA Değişken Tanımlama Biçimleri

[vc_row][vc_column][vc_column_text]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.

  1. Dim ile tanımlama
  2. Veri Tanımlayıcıları (Kısaltmalar) ile tanımlama
  3. 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, ByteInteger 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 değişken tanımlama tablosu

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.

def ile değişken tanılamayı locals windowda görüntüleme

 

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. 👍🏻[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][mk_image src=”https://peakup.org/wp-content/uploads/2020/06/office_imza_son.gif” image_size=”full”][/vc_column][/vc_row]