vba variables option explicit vba
Bu eğitim, VBA değişkenlerinin nasıl bildirileceğini ve kullanılacağını açıklar. Ayrıca seçenek açık, değişken kapsam, statik ve sabit değişkenler hakkında bilgi edinin:
Bir bilgisayarda, tüm veri değerleri bir bellekte veya bilgisayar deposunda saklanır. Bu değerlere erişmek için, bu değerle ilişkilendirilmiş, programlama dillerinde Değişken olarak adlandırılan bir ad belirtmeniz gerekir.
Bu eğitimde, çeşitli değişken kapsam türleriyle birlikte bir değişkeni nasıl tanımlayıp tanımlayacağımızı öğreneceğiz ve ayrıca Statik ve Sabit değişkenleri ayrıntılı olarak inceleyeceğiz.
=> VBA Eğitim Öğreticilerinin A-Z'sini Görmek İçin Burayı Kontrol Edin
Ne öğreneceksin:
VBA Değişkenleri
Değişkenler bilgisayar deposundaki değerler için yer tutucular gibidir. Değişkenler farklı değer çeşitlerini tutabilir ve bu değerler kodun yürütülmesi sırasında değişebilir.
Her değişkenin, değere erişmek için kullanılan bir adı olacaktır. VBA'nın ad seçimiyle ilgili belirli kısıtlamaları vardır.
Aşağıda, kısıtlamaların listesi listelenmiştir:
- Değişkeninizin adı 255 karakterden fazla olamaz.
- Değişken adı bir sayı ile başlayamaz.
- !, @, &,., # Gibi özel karakterlerle başlayamaz veya boşluklar olamaz.
- Anahtar kelimeler bir değişken adı olarak kabul edilmez.
Bu kısıtlamaları ihlal ederseniz derleyici bir hata verecektir.
Misal:
Geçerli Değişken Adları: varName, Result12, First_Number
Geçersiz Değişken Adları: 123abc, #number, Sub, abc.123
İlk Numara (Kelimeler arasında boşluk bırakılmaz)
Bir VBA Değişkeni Bildirme
Kullanmalıyız Yok bir değişkeni bildirmek için anahtar kelime. Bir değişken tanımlarken 2 bölüm vardır. 1stdeğişken adı ve 2ndVeri türü adı verilen değişkende saklanacak değer türüdür.
Sözdizimi: Dim DeğişkenAdı DataType olarak
Misal:
- Dim MyAge As Integer
- Dim My_Percentage As Double
- Dim Full_Name As String
Burada, derleyiciye, değişkenimin yalnızca bu tür verileri depolaması gerektiğini açıkça söylüyorsunuz ve VBA, değişken için tanımlanan bir değer veri türüyle eşleşmediğinde bir derleyici Türü uyuşmazlığı hatası verdiğinden emin olacaktır.
Misal:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Ancak değişkenin veri türünden emin değilseniz, VBA veri türünü atlamanıza izin verir. Aşağıda belirtilen sözdizimi de geçerlidir.
Dim Değişken Adı
Değişkenin veri türünü bildirmediğinizde, VBA bunu bir Değişken veri türü olarak ele alır ve bir tamsayı, dize, çalışma kitabı vb. Gibi her tür veri tamsayısını kabul etmek zorundadır. Aynı programda, varyant değişkenler dize değerini, tamsayı değerini ve diğer türleri de kabul edebilir.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Total_Marks değişken bir değişken olduğundan, önceki kodun aksine, derleyici aşağıda gösterildiği gibi herhangi bir hata vermeyecektir.
Not: VBA'nın bir değişkeni gerçekten bildirmeden kullanmanıza izin verdiğini unutmayın.
Aşağıdaki örnek kod da uygun bir sonuç verir. Bu durumda VBA, değişkeni otomatik olarak bir Variant veri türü olarak ele alır. Buna Örtük Beyanname denir.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Bir Değişken Bildirmenin Avantajları
- Hata Ayıklaması Kolay: Kullanmadan önce bir değişkeni bildirmek iyi bir uygulamadır. Bize tür uyuşmazlığı ve yazım hatası gibi hataları daha erken anlamamızı sağlar ve böylece programın mantığından sapma riskini azaltır.
- Daha İyi Okunabilirlik: Ekip olarak koda bakan pek çok kişi olacak ve bir değişkeni bildirmek, değişkenin alması beklenen değer türlerinde herkese yardımcı olacak ve ayrıca kullanıcıların programı çalıştırırken uygun girdi değerlerini girmesine yardımcı olacaktır.
- Depolama alanı: Bir değişken bildirmezseniz, VBA, diğer veri türlerine kıyasla bellekteki en büyük alanı (16 bayt ila 22 bayt) alan bir Değişken veri türü olarak değerlendirir. Örneğin, Sadece 1 bayt alan bir Byte türünde bir değişken kullanıyorsanız ve bildirmezseniz, VBA 16 baytlık bir alan ayırır ve böylece belleği boşa harcar.
Seçenek Açık
Tüm değişkenlerin açıkça bildirildiğinden emin olmak için, onları kullanmadan önce Option Explicit ifadesini kullanmalıyız. Bu modüldeki herhangi bir prosedürün başlangıcında kullanılmalıdır.
Seçenek Açık İfadesini kullanmayan bir örnek görelim.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Kodu yürütün (F5'e basın veya araç çubuğunda çalıştır düğmesine basın) ve boş bir mesaj kutusu alırsınız.
Değişkeni bildirmiş olsanız bile, Msgbox Firt_Name'deki yazım hatası nedeniyle boş bir sonuç kutusu ile karşılaştınız. Option Explicit, bu tür hataları ortadan kaldırmamıza yardımcı olacaktır.
Option Explicit'i kullanarak aynı kodu yeniden yapalım. Prosedür başlamadan önce Option Explicit'i girin.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Şimdi kodu çalıştırırsanız (araç çubuğunda F5 veya Çalıştır düğmesine basın) ve bir derleyici hatası alırsınız.
VBA'nın eklenmesini sağlayabilirsiniz Seçenek Açık otomatik olarak.
VB Düzenleyicide, Araçlar -> Seçenekler -> 'Değişken Bildirimi İste' seçeneğine gidin.
Şimdi Seçenek Açık her yeni modül eklediğinizde veya yeni bir makro kaydettiğinizde otomatik olarak eklenecektir.
Not: Option Explicit, mevcut VBA koduna eklenmeyecektir. Gerekirse manuel olarak eklemeniz gerekir.
Değişkene Bir Değer Atama
Değerler, eşittir sembolü (=) kullanılarak değişkenlere atanabilir. Excel'de bir hücreye atıfta bulunuyorsanız, Aralık işlevlerini kullanmanız gerekir.
Aşağıdaki koda bakın.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
Yukarıdaki örnekte, var1, (=) kullanarak 10 değerini doğrudan depolayan bir değişkendir ve Aralık işlevi, Excel hücresi C1 ila C14 arasında 10 olan var1 değerinin girilmesine yardımcı olacaktır.
Bir Değişkenin Kapsamı
Bir programdaki her değişkenin tanımlanmış bir kapsamı olacaktır. Bu kapsam, programa değişkenin göründüğü alanları, yani değişkeni kullanabilen veya kullanamayan modül veya işlevi söyler.
VBA'nın değişken için tanımlanmış 3 tür Kapsamı vardır.
- Prosedür düzeyinde kapsam
- Özel modül düzeyinde kapsam
- Genel modül düzeyinde kapsam
Prosedür Düzeyinde Kapsam
Bir prosedürde, yani Alt veya Fonksiyonda tanımlanan Değişkenler yalnızca onları kullanabilir. Bunlar başka hiçbir prosedür tarafından görülmez.
Misal:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Yukarıdaki kodu çalıştırdığınızda, ilk Sub için msgbox uygun bir sonuç döndürür, ancak ikinci Sub için bir Derleyici hatası atılır. Köşe değişkeni yalnızca 1stalt ve 2 için değilnd. Option Explicit kullandığımız için, 2'deki değişkenleri tanımlamadığımız için bir derleyici hatası alacağız.ndalt.
Özel Modül Düzeyinde Kapsam
Bu değişkenler, tanımlanan modüldeki tüm prosedürler için mevcuttur. Varsayılan olarak, Yok kapsamı özel olarak belirlenir. Ancak daha iyi okunabilirlik için özel eklemeniz önerilir.
Aynı örneği ele alalım ama değişkeni prosedürün dışında ilan edeceğiz.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Yürütmeden sonra, her iki prosedürün de hatasız olarak doğru sonuçları döndüreceğini göreceksiniz. Net bir anlayış için, msgbox'a doğru başlığı ekledik.
Genel Modül Düzeyinde Kapsam
Bu tür değişkenler, bir projenin tüm modüllerinde ve tüm prosedürler tarafından görülebilir. 2 modül takın. (Bir sayfaya ve Ekle -> modüllere sağ tıklayın).
Aşağıdaki kodu tek bir modüle girin.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
2. modüle aşağıdaki kodu girin.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Sonuçlar aşağıda gösterilmiştir
Şimdi pratik bir örneği ele alalım ve tüm kapsamı daha iyi anlayalım.
Yukarıdaki kod için referans dosyası ektedir.
Statik Değişken
Genellikle değişkenin değeri yalnızca prosedür çağrısından prosedür sonuna kadar korunur. Prosedürün yürütülmesi sona erdiğinde değeri korumaz.
Örneğin , yukarıdaki kodda, firstNo ve secondNo değeri prosedür biter bitmez kaldırılır, bir dahaki sefere kodu çalıştırırsanız, firstNo ve secondNo kodda tanımlananla aynı değeri alır.
Ancak Statik değişkenler, yürütmeden sonra bile değişkenin değerini koruyacak olanlardır. Statik değişkene yalnızca bir alt veya işlev içinde izin verilir.
Aşağıdaki kodu statik olmayan bir değişkenle düşünün.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
F5'e her bastığınızda, sonuç olarak yalnızca 1 alırsınız.
Şimdi değişkeni statik olarak ilan edelim.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Kodu her çalıştırdığınızda (F5) Statik değişken değerini koruduğu için sonuç 1,2,3 vb. Gibi artan bir değere sahip olacaktır.
Not: Statik değişken, siz araç çubuğundaki Sıfırla düğmesine basana veya çalışma kitabını kapatana kadar değeri korur.
Sabit Değişken
Adından da anlaşılacağı gibi, bu değişkenlerin değeri programın yürütülmesi sırasında değiştirilemez. Bir sabit bildirildikten sonra değiştirilemez veya yeni bir değer atanamaz.
Bir sabitin beyan edilmesi bir prosedür dahilinde veya modül düzeyinde yapılabilir (tüm prosedürlerin üzerinde).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Sabit değeri değiştirmeye çalışırsanız, bir derleme hatası atılır.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
SSS
S # 1) VBA'da genel bir değişken nasıl ayarlanır?
Cevap: Genel değişkenler, bir prosedür başlamadan önce bildirilir. Bir değişken bildirilirken public anahtar sözcüğü kullanılmalıdır.
Tam Sayı Olarak Genel Toplam_Marklar
S # 2) Prosedür dışında hangi tür değişkenler bildirilemez?
Cevap: Statik Değişkenler, VBA'da yordamın dışında bildirilemez ve bir derleme hatası alırsınız.
S # 3) VBA'da bir değişken nasıl bildirilir?
Cevap: Dim anahtar sözcüğü bir değişkeni bildirmek için kullanılır. Dim, Boyut anlamına gelir.
Dim variablename As Datatype
S # 4) VBA'da bir hücreye değişken değeri nasıl atanır?
Cevap: Aralık işlevini kullanabilirsiniz.
var1 = 10
Aralık ('C1: C14'). Değer = var1
S # 5) VBA'daki Değişkenler nelerdir?
Cevap: Değişkenler, bilgisayar depolamasındaki değerler için yer tutucular gibidir. Değişkenler farklı değer çeşitlerini tutabilir ve bu değerler kodun yürütülmesi sırasında değişebilir. Her değişkenin, değişken adını kullanarak bir adı olmalıdır, bilgisayar o değişken için atanan değeri alacaktır.
S # 6) VBA'da bir Değişken bildirmeniz gerekiyor mu?
Cevap: Beyan, VBA'da isteğe bağlıdır. Bir değişkeni bildirmezseniz ve onu doğrudan prosedürde kullanırsanız, buna Örtük Bildirim denir. Koddaki hataları önlemek ve daha iyi okunabilirlik için, bir değişkeni açıkça bildirmeniz önerilir.
S # 7) VBA'da birden çok Değişkeni nasıl bildirebilirim?
Cevap: Tek bir bildirim ifadesinde birden çok değişken tanımlayabilirsiniz. Bir As yan tümcesinde virgülle ayrılmış değişken adını belirtmeniz yeterlidir.
char'ı int c ++ 'ya çevir
Dim FirstNo, SecondNo As Integer
Tek bir bildirim ifadesinde farklı değişkenler de belirtebilirsiniz. Her değişken, değişken adı bölümünden sonra As yan tümcesinde belirtilen veri türünü alacaktır.
Dim a, b As Single, c, d As Double, e As Integer, f As String
S # 8) VBA'da loş ve özel arasında ne zaman fark olmaz?
Cevap: Özel modül düzeyinde bir kapsam bildiriyorsanız, bir değişkeni sönük veya özel olarak bildirmek arasında hiçbir fark yoktur. Varsayılan olarak, değişkenler Yok kapsamı özel olarak belirlenir. Ancak daha iyi okunabilirlik için özel eklemeniz önerilir.
S # 9) Modül düzeyinde değişken nedir?
Cevap: Modül düzeyindeki değişkenler özel veya genel olabilir. Özel değişkenler, bu modüldeki tüm prosedürler için mevcuttur ve diğer herhangi bir modül tarafından görülmez. Genel değişkenler, bir projedeki tüm modüllerdeki tüm prosedürler tarafından görülebilir.
Sonuç
Herhangi bir programlama dilinde bir değişken çok önemlidir. Bu eğitimde değişkenlerin ne olduğunu, bunların programda nasıl açıklanacağını ve kullanılacağını gördük. Ayrıca, açık bildirimin uygulanmasını zorlayan Option Explicit yöntemini de araştırdık.
Kullanıcıların değişkenin kodun hangi bölümlerini kullanabileceğini belirlemelerine yardımcı olan farklı değişken kapsamı türleri tartışılmıştır. Değişkenin değerini korumaya yardımcı olan Statik değişkenlerin ve değişkenin değerini değiştirmeden korumaya yardımcı olan Sabit değişkenlerin kullanımını öğrendik.
=> Sıfırdan VBA'yı Öğrenmek İçin Burayı Ziyaret Edin
Önerilen Kaynaklar
- Excel VBA Eğitimi - Excel'de VBA'ya Giriş
- Örneklerle Excel VBA Dizisi ve Dizi Yöntemleri
- VBA Veri Türleri - VBA'da Sayısal ve Sayısal Olmayan Veri Türleri
- Python Değişkenleri
- C ++ 'da Değişkenler
- Java Değişkenleri ve Türleri Örneklerle
- C # Veri Türleri ve Örneklerle Değişkenler
- VBScript Değişkenleri: Değişkenler Nasıl Bildirilir ve Kullanılır - VBScript Dim