Vba değişkenleri hakkında bilmeniz gereken her şey
Değişken VBA
VBA’da bir değişken, kendisi sisteminizde saklanan bir saklama kutusu gibidir, ancak sizin için orada bir değer saklayabilir ve bu değeri kodunuzda kullanabilir ve isterseniz bu değeri değiştirebilirsiniz (adından da anlaşılacağı gibi, “VARIABLE” ”, değeri sabit olmayan bir şeydir).
Bir değişkeni bildirmek için basit bir prosedür izlemelisiniz:
- Başlangıçta “Dim” anahtar kelimesini kullanın.
- Değişken için bir ad belirtin.
- İsmin ardından “As” anahtar kelimesini kullanın.
- Atamak istediğiniz değere göre değişkenin “Veri Türü”nü belirtin.
Burada “startDate” adını kullandık ve “Tarih” veri tipini belirledik. Bir değişkeni tanımladıktan sonra ona bir değer atayabilirsiniz.
Dim startDate As Date startDate = “11/10/2018”
Artık kodunuzda başlangıç tarihini kullandığınızda Excel, verdiğiniz tarihi kullanır.
Veri tipleri
VBA’da veri türleri temel olarak bir değeri bir değişkene veya sabite kaydederken belirtmeniz gereken veri türleridir. Örneğin, bir tarihi bir değişkende saklamak istiyorsanız, önce o tarih değişkenini veri türü olarak bildirmeniz gerekir.
Açıklanan Veri Türleri
İşte VBA’da kullanabileceğiniz veri türlerinin tam listesi.
Veri tipi | Kullanılan bayt sayısı | Değer aralığı |
---|---|---|
Bayt | 1 bayt | 0 ila 255 |
boolean | 2 bayt | Doğru ya da yanlış |
Tüm | 2 bayt | -32,768 ila 32,767 |
Uzun (tamsayı uzun) | 4 bayt | -2,147,483,648’den 2,147,483,647’ye |
Yalnız | 4 bayt | Negatif değerler için -3,402823E38 ila -1,401298E-45; Pozitif değerler için 1,401298E-45 ila 3,402823E38 |
Çift | 8 bayt | Negatif değerler için -1,79769313486231E308 ila -4,94065645841247E-324; Pozitif değerler için 4,94065645841247E-324 ila 1,79769313486232E308 |
Peşin | 8 bayt | -922,337,203,685,477,5808 ila 922,337,203,685,477,5807 |
Ondalık | 14 bayt | +/-79 228 162 514 264 337 593 543 950 335 ondalık noktası olmadan; +/-7,9228162514264337593543950335, virgülün sağında 28 ondalık basamakla |
Tarih | 8 bayt | 1 Ocak 100 – 31 Aralık 9999 |
Nesne | 4 bayt | Herhangi bir nesne referansı |
Zincir (değişken uzunluk) | 10 bayt + dize uzunluğu | 0 ila yaklaşık 2 milyar |
Zincir (sabit uzunluk) | Zincir uzunluğu | 1 ila yaklaşık 65.400 |
Varyant (sayılarla) | 16 bayt | Double aralığına kadar herhangi bir sayısal değer |
Varyant (karakterli) | 22 bayt + dize uzunluğu | Değişken uzunluklu dizeyle aynı aralık |
Kullanıcı tanımlı | Çeşitli | Her öğenin aralığı, veri türünün aralığıyla aynıdır |
Bu, değişkenler ve sabitler için veri tipinin bildirilmesinde önemle tavsiye edilir.
Bir değişken veya sabit için veri tipini belirttiğinizde verilerinizin geçerliliği sağlanır ve geçersiz veri tipi girmeniz engellenir. Veri türünü atlarsanız VBA, Değişken veri türünü değişkeninize uygular; bu en esnek olanıdır ve VBA, veri türünün ne olması gerektiğini tahmin etmez.
İpucu: Veri türlerini belirtmeyi atlamamanın en iyi yolu, herhangi bir koda başlamadan önce modülün en üstündeki açık seçeneğini kullanmaktır.
Açıkça veya örtülü olarak
Bir değişkeni açıkça veya örtülü olarak bildirebilirsiniz. Açık bildirim, bir değişkene değer atamadan önce onu bildirip değerini ayarlamanız anlamına gelir . Bunun AVANTAJI, onu tanımlamanız ve veri türü VBA’nın verileri her zaman bu formatta saklamasıdır.
İşte bir örnek:
Dim myDate As Date
Dolayısıyla bu VBA’da değer depoladığınızda, buna her zaman tarih biçimi uygulanacaktır. Ancak örtülü bildirimde, bu açık bildirim bildirimiyle uğraşmazsınız. Bunun yerine, değişkenin değerini ayarlar ve onu kod ifadesinde kullanırsınız. Örtülü bildirimde VBA, türü belirtmediğiniz için verileri Variant değişken türünde saklar.
Başka bir deyişle, kodunuzda bir değişkeni bildirmeden kullanırsanız, bu örtülüdür. Aşağıda örtülü bir bildirim örneği verilmiştir:
myDate = “11/10/1990”
Değeri bir değişkene bu şekilde atayabilirsiniz ve bunu kod ifadelerinizde kullanabilirsiniz. Bana sorarsanız, bir değişkeni kullanmadan önce bildirmek her zaman, yani her zaman daha iyidir. Bu yalnızca iyi bir uygulama olmakla kalmaz, aynı zamanda kodunuzun daha hızlı çalışmasını ve anlaşılmasını da kolaylaştırır.
Statik değişken
Peki, sana değişkenin değeri değiştirebileceğin yer olduğunu söylemiştim ama bu farklı bir şey. Normal bir değişkende bir prosedür tamamlandığında değişkende saklanan değer VBA’nın belleğinden silinir ancak bu değeri kaybetmek istemiyorsanız bu değişkeni statik hale getirebilirsiniz.
Bir değişkeni değeri koruyacak şekilde statik yapmak için, “Dim” yerine “Static” anahtar kelimesini kullanmanız yeterlidir.
Bir değişkeni adlandırın
Bir değişkene istediğiniz adı verebilirsiniz (bu kurallar aynı zamanda sabit ve prosedür adı için de geçerlidir), ancak birkaç kurala uymanız gerekir:
- Alfabe, rakam ve bazı noktalama işaretlerini kullanabilirsiniz ancak ismin ilk karakteri alfabe olmalıdır.
- Boşluklar veya noktalar adda kullanılacak geçerli karakterler değildir ancak adın okunabilir olmasını sağlamak için alt çizgi kullanabilirsiniz.
- Bir adda özel karakterler kullanamazsınız.
- Bir adın uzunluğu 254 karakter olabilir ancak anlamlı olmayan bir ad kullanılması.
- İsim için kullanamayacağınız birçok ayrılmış kelime vardır. Bu kelimelerden herhangi birini kullanmaya çalışırsanız bir hata mesajı alırsınız.
- VBA vakalar arasında ayrım yapmaz.
Kapsam
Bu noktada prosedürleri ve hangi prosedürün hangi durumda faydalı olduğunu biliyorsunuz, aynı zamanda değişkenleri ve veri türlerinin nasıl tanımlanacağını da öğreniyorsunuz.
Bir sonraki önemli şey, kullanılabilirlik anlamına gelen kapsamı anlamaktır. Kullanılabileceği yer burasıdır. Bir değişkeni tanımladığınızda kapsam, onları ana bilgisayar prosedürlerinin dışında kullanıp kullanamayacağınızı tanımlar. Değişken kapsamları tanımlamanın üç yolu vardır (sabit ve hatta tüm prosedürle birlikte).
- Prosedür düzeyi: Bir değişkeni yalnızca onu bildirdiğiniz prosedürde kullanabilirsiniz.
- Modül düzeyi (özel): Bir değişkenin bir modüldeki tüm prosedürlerden erişilebilir olmasını sağlar.
- Modül düzeyi (Genel): Bir değişkenin tüm modüllerdeki tüm prosedürlerden erişilebilir olmasını sağlar.
Bir değişkenin varsayılan kapsamı, bu değişkenin bildirildiği prosedürdür (Prosedür Düzeyi).
Ama sizinle gerçek dünyadan bir şey paylaşayım.
Ortak çalışma alanında çalışıyorum ve oturduğum yer üç katlı binanın birinci katında. Neredeyse her gün aynı koltukta oturuyorum. Yani prosedür düzeyi kapsamına sahip bir değişken bildirirseniz, onu yalnızca aynı prosedür içinde kullanabilirsiniz. Tıpkı her gün aynı katta, aynı koltukta oturduğum gibi. Ama daha fazlasını söyleyeyim: Birinci katta otursam da diğer katlardaki her koltuğu da kullanabilirim. Aşağıdaki anlık görüntüde ise herhangi bir işleme başlamadan önce modülün üst kısmındaki “myName” değişkenini Private anahtar kelimesini kullanarak tanımladık ve üç kodda da bunu kullandım. Bu modülü, farklı katlara (Prosedürler) sahip olduğunuz bir bina olarak düşünün ve değişkeni zaten modülün başında tanımladığınız için, bu modüldeki prosedürlerden herhangi birini kullanabilirsiniz. Buna özel modül düzeyinde kapsam belirleme denir. Şimdi son olarak şunu söyleyeyim: Ofisimin ülke genelinde farklı şehirlerde şubeleri var ve oraya gidersem o ofislere gidebilir, istersem koltuklardan herhangi birini kullanabilirim. Yani çalışma kitabınızda farklı modüller varsa, bir değişkeni Public olarak bildirerek tüm bu modüllerde kullanabilirsiniz.