VBA'da değişkenler ve sabitler

VBA'da, diğer programlama dillerinde olduğu gibi, herhangi bir değeri saklamak için değişkenler ve sabitler kullanılır. Adından da anlaşılacağı gibi, değişkenler değişebilir, sabitler ise sabit değerleri saklar.

Örneğin, bir sabit Pi 3,14159265 değerini saklar… Programın yürütülmesi sırasında “Pi” sayısı değişmez, ancak böyle bir değeri sabit olarak saklamak yine de daha uygundur.

Aynı zamanda değişkeni kullanabiliriz. sVAT_Oranı KDV oranını satın alınan mallarda saklamak için. değişken değer sVAT_Oranı satın alınan ürüne göre değişiklik gösterebilir.

Veri tipleri

Tüm değişkenler ve sabitler belirli bir veri tipindedir. Aşağıdaki tablo, VBA'da kullanılan veri türlerini bir açıklama ve olası değerler aralığıyla listeler:

Veri tipi bedenAçıklamaDeğer aralığı
Bayt1 baytPozitif tam sayılar; genellikle ikili veriler için kullanılır0 gelen 255 için
Boole2 baytDoğru veya Yanlış olabilirDoğru ya da yanlış
Tamsayı2 baytTam sayılar (kesirli kısım yok)-32'den +768'ye
Uzun4 baytBüyük tamsayılar (kesirli kısım yok)от -2 147 483 648 до +2 147 483 647
tek4 baytTek duyarlıklı kayan nokta sayısı-3.4e38'den +3.4e38'e
Çift8 baytÇift duyarlıklı kayan nokta sayısı-1.8e308'den +1.8e308'e
Para birimi8 baytSabit sayıda ondalık basamaklı kayan nokta sayısıот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Tarih8 baytTarih ve saat – Tarih türündeki veriler, kayan noktalı bir sayı ile temsil edilir. Bu sayının tamsayı kısmı tarihi, kesir kısmı ise zamanı ifade eder.1 Ocak 100'den 31 Aralık 9999'a kadar
nesne4 baytnesne referansıHerhangi bir nesne referansı
dizideğişiyorKarakter seti. Dize türü sabit veya değişken uzunlukta olabilir. Değişken uzunlukta daha yaygın olarak kullanılırSabit uzunluk - yaklaşık 65 karaktere kadar. Değişken uzunluk – yaklaşık 500 milyar karaktere kadar
VaryantdeğişiyorBir tarih, bir kayan nokta veya bir karakter dizisi içerebilir. Bu tip, ne tür veri girileceğinin önceden bilinmediği durumlarda kullanılır.Sayı – Çift, string – String

Açıkçası, yukarıdaki tabloyu kullanarak ve doğru veri türünü seçerek belleği daha ekonomik kullanabilirsiniz (örneğin, veri türünü seçin). Tamsayı yerine Uzun or tek yerine Çift). Ancak, daha kompakt veri türleri kullanırken, kodunuzun orantısız olarak büyük değerleri bunlara sığdırmaya çalışmamasına dikkat etmeniz gerekir.

Değişkenleri ve Sabitleri Bildirme

Çevirmenin Notu: VBA'daki değişkenlerden bahsetmişken, çok önemli bir noktaya daha değinmekte fayda var. Bir değişken bildirirsek ancak ona herhangi bir değer atamazsak, varsayılan bir değerle başlatılır:

• metin dizeleri boş dizelerle başlatılır;

• sayılar — 0 değeri;

• tür değişkenleri Boole - Yanlış;

• tarihler – 30 Aralık 1899.

Bir değişken veya sabit kullanılmadan önce bildirilmelidir. Bunu yapmak için, aşağıdaki basit kod satırını makroya ekleyin:

Dim Имя_Переменной As Тип_Данных

Yukarıdaki kod satırında Değişken ismi kodda kullanılacak değişkenin adıdır ve Veri tipi bu makalenin biraz önceki bölümlerinde verilen tablodaki veri türlerinden biridir. Örneğin:

Dim sVAT_Rate As Single Dim i As Integer

Sabitler benzer şekilde bildirilir, ancak sabitler bildirilirken değerleri hemen belirtilmelidir. Örneğin, bunun gibi:

Const iMaxCount = 5000 Const iMaxScore = 100

Excel'de değişkenleri bildirmek gerekli değildir. Varsayılan olarak, Excel'de girilen ancak bildirilmeyen tüm değişkenler şu türe sahip olacaktır: Varyant hem sayısal hem de metin değerini kabul edebilecektir.

Böylece, programcı yeni değişkeni herhangi bir zamanda kullanabilir (bildirilmemiş olsa bile) ve Excel bunu bir tür değişkeni olarak değerlendirecektir. Varyant. Ancak, bunun yapılmamasının birkaç nedeni vardır:

  1. Bellek kullanımı ve hesaplama hızı. Veri türünü belirten bir değişken bildirmezseniz, varsayılan olarak türe ayarlanacaktır. Varyant. Bu veri türü, diğer veri türlerinden daha fazla bellek kullanır. Değişken başına birkaç ekstra bayt kulağa pek hoş gelmeyebilir, ancak pratikte programların binlerce değişkeni olabilir (özellikle dizilerle çalışırken). Bu nedenle, gibi değişkenler tarafından kullanılan ekstra bellek Varyant, türündeki değişkenlerle karşılaştırıldığında Tamsayı or tek, önemli bir miktara kadar ekleyebilir. Ayrıca, tür değişkenleriyle yapılan işlemler Varyant diğer türlerdeki değişkenlerden çok daha yavaş yürütülür, sırasıyla fazladan bin tür değişken Varyant hesaplamaları önemli ölçüde yavaşlatabilir.
  2. Değişken isimlerinde yazım hatalarının önlenmesi. Tüm değişkenler bildirilirse, VBA ifadesi kullanılabilir - Seçenek Açıkça (bunun hakkında daha sonra konuşacağız) tüm bildirilmemiş değişkenleri tanımlamak için. Bu, yanlış yazılmış bir değişken adı sonucu programda bir hatanın görünümünü ortadan kaldırır. Örneğin, adlı bir değişken kullanarak sVAT_Oranı, yazım hatası yapabilir ve bu değişkene bir değer atayarak “VATRate = 0,175” yazabilirsiniz. Değişkenin bundan böyle sVAT_Oranı 0,175 değerini içermelidir – ama elbette içermez. Kullanılan tüm değişkenlerin zorunlu bildirim modu etkinleştirilirse, VBA derleyicisi değişkeni bulmayacağından hemen bir hata gösterecektir. KDV oranı açıklananlar arasında.
  3. Bir değişkenin bildirilen türüyle eşleşmeyen değerleri vurgulama. Belirli bir türde bir değişken bildirir ve ona farklı bir türde veri atamaya çalışırsanız, düzeltilmezse programın çökmesine neden olabilecek bir hata alırsınız. İlk bakışta, bu, değişkenleri bildirmemek için iyi bir neden gibi görünebilir, ancak aslında, öncekinden çok, değişkenlerden birinin alması gereken yanlış verileri aldığı ortaya çıktı - çok daha iyi! Aksi takdirde program çalışmaya devam ederse sonuçlar yanlış ve beklenmedik olabilir ve hataların nedenini bulmak çok daha zor olacaktır. Makronun "başarıyla" yürütülmesi de mümkündür. Sonuç olarak, hata fark edilmeyecek ve yanlış verilerle çalışma devam edecektir!

Bu bağlamda, yanlış bir veri tipinin tespit edilmesi ve koddaki bu tür hataların mümkün olduğunca erken düzeltilmesi arzu edilir. Bu nedenlerle, bir VBA makrosu yazarken tüm değişkenleri bildirmeniz önerilir.

Seçenek Açıkça

Kullanım Seçenek Açıkça VBA kodunda kullanılacak tüm değişkenlerin bildirilmesine neden olur ve tüm bildirilmemiş değişkenleri derleme sırasında (kod yürütme başlamadan önce) hata olarak işaretler. Bu operatörü uygulamak zor değil - sadece bu satırı VBA dosyasının en üstüne yazın:

Option Explicit

Her zaman eklemek istiyorsanız Seçenek Açıkça Oluşturulan her yeni VBA modülünün üstüne bu otomatik olarak yapılabilir. Bunu yapmak için seçeneği etkinleştirmeniz gerekir. Değişken Bildirimi Gerektir VBA düzenleyici ayarlarında.

Bu şu şekilde yapılır:

  • Visual Basic Düzenleyici menüsünden, araçlar > Opsiyonlar
  • Görüntülenen iletişim kutusunda sekmeyi açın editör
  • Kutuyu kontrol et Değişken Bildirimi Gerektir ve basın OK

Etkinleştirildiğinde, dize Seçenek Açıkça oluşturulan her yeni modülün başına otomatik olarak eklenecektir.

Değişken ve Sabitlerin Kapsamı

Bildirilen her değişken veya sabitin kendi sınırlı kapsamı, yani bu değişkenin bulunduğu programın sınırlı bir bölümü vardır. Kapsam, değişken veya sabitin bildiriminin nerede yapıldığına bağlıdır. Örneğin, değişkeni alın sVAT_Oranı, işlevde kullanılan Toplam tutar. Aşağıdaki tabloda, değişken kapsam belirleme için iki seçenek ele alınmaktadır. sVAT_Oranımodülde iki farklı pozisyonda bildirildi:

Seçenek Açık Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
Değişken sVAT_Oranı modülün en başında bildirilirse, bu değişkenin kapsamı modülün tamamı olacaktır (yani değişken sVAT_Oranı bu modüldeki tüm prosedürler tarafından tanınacaktır).

Bu nedenle, eğer fonksiyonda ise Toplam tutar değişken sVAT_Oranı bir değer atanacak, daha sonra aynı modül içinde yürütülen bir sonraki fonksiyon değişkeni kullanacak sVAT_Oranı aynı anlama gelir.

Ancak, başka bir modülde bulunan bir işlev çağrılırsa, bunun için değişken sVAT_Oranı bilinmeyecek.

Seçenek Açık İşlev Total_Cost() As Double Dim sVAT_Rate As Single ... End Function
Değişken sVAT_Oranı fonksiyonun başında bildirilen Toplam tutar, o zaman kapsamı yalnızca bu işlevle sınırlı olacaktır (yani işlev içinde Toplam tutar, değişkeni kullanabilirsiniz sVAT_Oranı, ama dışarıda değil).

kullanmaya çalışırken sVAT_Oranı başka bir prosedürde, bu değişken fonksiyonun dışında bildirilmediği için VBA derleyicisi bir hata bildirecektir. Toplam tutar (operatörün kullanılması şartıyla Seçenek Açıkça).

Yukarıda gösterilen örnekte, değişken, anahtar kelime ile modül düzeyinde bildirilir. Sönük. Ancak, bildirilen değişkenlerin diğer modüllerde kullanılabilmesi gerekli olabilir. Bu gibi durumlarda, bir anahtar kelime yerine bir değişken bildirmek Sönük anahtar kelime kullanılmalıdır Açık Alan.

Bu arada, anahtar kelime yerine modül düzeyinde bir değişken bildirmek için Sönük anahtar kelime kullanılabilir Özel Etkinlik, bu değişkenin yalnızca geçerli modülde kullanılması amaçlandığını gösterir.

Sabitleri bildirmek için anahtar sözcükleri de kullanabilirsiniz. Açık Alan и Özel Etkinlik, ancak anahtar kelime yerine değil İnş, onunla birlikte.

Aşağıdaki örnekler, anahtar kelimelerin kullanımını göstermektedir. Açık Alan и Özel Etkinlik değişkenlere ve sabitlere uygulanır.

Seçenek Açık Genel sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
Bu örnekte, anahtar kelime Açık Alan değişken bildirmek için kullanılır sVAT_Oranı ve sabitler iMax_Count. Bu şekilde beyan edilen unsurların kapsamı, mevcut projenin tamamı olacaktır.

Bu demektir ki, sVAT_Oranı и iMax_Count herhangi bir proje modülünde mevcut olacaktır.

Seçenek Açık Özel sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
Bu örnekte, bir değişken bildirmek için sVAT_Oranı ve sabitler iMax_Count kullanılan anahtar kelime Özel Etkinlik. Bu öğelerin kapsamı geçerli modüldür.

Bu demektir ki, sVAT_Oranı и iMax_Count mevcut modülün tüm prosedürlerinde mevcut olacak, ancak diğer modüllerdeki prosedürlerde mevcut olmayacak.

Yorum bırak