VBA Global değişkenleri, herhangi bir prosedür, fonksiyon veya modülün dışında bildirilen ve programdaki herhangi bir yerden erişilebilen değişkenlerdir. Bildirildikten sonra, VBA Global Değişkenlerine tüm modüller ve prosedürler dahil olmak üzere herhangi bir program bölümünden erişilebilir ve değiştirilebilir. Prosedürler veya fonksiyonlar arasında bir argüman olarak geçirmek yerine programınız boyunca kullanılacak bir değeri depolamanız gerektiğinde faydalı olabilir.
Ancak, global değişkenleri dikkatli kullanmak önemlidir, çünkü kodunuzun hata ayıklamasını ve bakımını zorlaştırabilirler. Ayrıca, global değişken programın bir bölümünde değiştirilirse, değerine güvenen diğer program bölümlerinin davranışını etkileyebilir.
Aşağıdaki kodu inceleyin:

DeclareSum() çalıştırıldığında Immediate sekmesinde “Example” değeri 200 olarak yazdırılacak ve FindDifference() çalıştırıldığında eğer giriş 22 olarak verilirse, Example değeri artık 178 olacaktır.


- VBA Global değişkeni prosedürlerin, işlevlerin veya modüllerin dışında bildirilir. Ancak, programdaki herhangi bir yerden erişilebilir.
- Küresel değişkenin sözdizimi, Küresel değişken-adı olarak Veri Türü'dür .
- Küresel değişkenleri kullanırken, bunların başlatıldığından ve değerlerinin doğru şekilde güncellendiğinden emin olmak önemlidir, çünkü bunlara birden fazla modül ve prosedürden erişilebilir ve bunlar değiştirilebilir.
- Ayrıca, farklı değişken türleri arasında isim çakışmalarından kaçınmak ve kodun okunabilirliğini ve sürdürülebilirliğini artırmak için açıklayıcı değişken isimleri kullanmak da önemlidir.
VBA Excel'de Global Değişkenler Nasıl Bildirilir?
VBA'da global değişkenleri bildirme adımları aşağıdaki gibidir:
- Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Editörü açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.


Küresel değişkenlere erişmek için, VBA'da değişken adını ve değişken veri türünü izleyen 'Global' anahtar sözcüğünü kullanın . Örneğin, Global Örnek Tamsayı Olarak
Örnek veri türünde Tamsayı adında bir küresel değişken bildirecektir. Daha sonra bu değişkeni kodunuzun herhangi bir yerinde adıyla (Örnek) başvurarak kullanabilirsiniz. - Bir VBA global değişkeni bildirin ve global bir değişken kullanarak birleştirilmiş bir dize yazdırın. VBA global değişkenlerine erişmek için önce bunları gösterildiği gibi bildirmeliyiz.

- Yukarıda bahsedilen örneği görüntülemek için bir alt prosedür oluşturun.

- mystr için bir değer başlatın ve orijinal değerini güncellemek için başka bir dizeyle (özel) birleştirin.

- Aşağıdaki ifadeyi kullanarak mystr değişkenini yazdırıp değerini kontrol edin.

Burada, Örnek değişkeni, modüller arasında VBA küresel değişkenlerine erişim sağlayan küresel bir değişken olarak tanımlanmıştır. Çıktı, aşağıda görüldüğü gibi VBA düzenleyicisindeki Hemen sekmesinde yazdırılacaktır.
• Kod:
Global mystr As String
Sub PrintString()
mystr = “Merhaba “
mystr1 = InputBox(“Enter a string”)
mystr = mystr + mystr1
Debug.Print mystr
End Sub - Kodu F5 veya Çalıştır düğmesine basarak çalıştırın. Çıktı aşağıda gösterilmiştir. Burada, "World" dizesi özel dize için girdidir. İkisi birleştirildiğinde, sonucu elde ederiz:

Modül Değişkenleri
Modül düzeyindeki değişkenler aynı modül içindeki herhangi bir alt prosedürde kullanılabilir.
Modül düzeyinde bir değişken bildirdiğinizde, aynı modül içindeki herhangi bir prosedür tarafından erişilebilir ve değiştirilebilir. Bu, değişkeni bir prosedürde bildirebileceğiniz ve onu argüman olarak geçirmeden aynı modül içindeki başka bir prosedürde kullanabileceğiniz anlamına gelir.
Ancak, modül düzeyindeki değişkenlerin, bildirildikleri modülün dışında erişilebilir olmadığını belirtmek önemlidir. Birden fazla modülde bir değişken kullanmanız gerekiyorsa, bunun yerine küresel bir değişken kullanmayı düşünün.
Modül düzeyinde bir değişkeni bildirmek için, modülün en üstünde, herhangi bir prosedür veya fonksiyonun dışında, Dim anahtar sözcüğünü, ardından değişken adını ve veri türünü kullanabilirsiniz. Örneğin:
myDate'i Tarih olarak Kıs
'Date' veri tipinde 'myDate' adlı bir modül düzeyinde değişken tanımlayacaktır. Bu değişkeni aynı modül içindeki herhangi bir alt prosedürde ismine (myDate) başvurarak kullanabilirsiniz.
Örnek
Mevcut tarihi yazdırmak istediğiniz bir örneği düşünün. Excel'in bunu yapan "Tarih" adlı yerleşik bir işlevi veya veri türü vardır.
- Adım 1: Başlamak için, bugünün tarihini yazdırmak üzere PrintTheDate() adında bir Alt prosedür oluşturun.

- Adım 2: Date veri türünde myDate adında bir değişken tanımlayın .

- Adım 3: myDate değişkeni için 'Date'i atayarak bir değer başlatın. Excel VBA'daki ' Date' fonksiyonu geçerli tarihi yazdırır.

- Adım 4: Debug.Print komutunu kullanarak myDate'i yazdırın . Excel VBA'daki 'Hemen' sekmesindeki değeri yazdıracaktır.

- Adım 5: Fonksiyonu çalıştırmak için VBA araç çubuğundaki yeşil üçgene basın.

- Adım 6: Çıktı aşağıda gösterilmektedir.

- Kod:
Sub PrintTheDate()
Dim myDate As Date
myDate = Date
Debug.Print myDate
End Sub
Küresel Değişkenler
Küresel değişkenler aynı modül içindeki herhangi bir alt prosedürde ve aynı Excel VBA projesi içindeki herhangi bir modülde kullanılabilir.
Kodunuzun en üstünde herhangi bir prosedür veya fonksiyonun dışında bir değişkeni Public olarak bildirdiğinizde, aynı projedeki herhangi bir prosedür veya modül tarafından erişilebilir ve değiştirilebilir. Değişkeni bir modülde bildirebilir ve modüller arasında VBA global değişkenlerine erişebilirsiniz.
Ancak, daha önce de belirtildiği gibi, global değişkenleri dikkatli kullanmak esastır. Global değişkenleri kullandığınızda, kapsamları konusunda dikkatli olmanız ve programın diğer bölümleri tarafından beklenmedik şekilde değiştirilmediğinden emin olmanız gerekir. Ayrıca, kodunuzun hata ayıklamasını ve bakımını zorlaştırabilir.
Küresel bir değişkeni tanımlamak için, kodunuzun en üstünde, herhangi bir prosedür veya fonksiyonun dışında, ' Public' anahtar sözcüğünü, ardından değişken adını ve veri türünü kullanın.
Örnek
Tutarlı bir şekilde güncellemek istediğiniz satış verilerinden oluşan bir tablo düşünün. Bu durumda, VBA Global değişkenlerini kullanabilir ve değerleri dinamik olarak değiştirmek için hücreye yazdırabiliriz.

- Adım 1: Integer veri türünde global bir totalSales değişkeni tanımlayın .

- Adım 2: İlk 3 satırın değerlerini toplayan CalculateSales() adlı bir alt prosedür başlatın .

- Adım 3: İlk üç satırın değerlerini toplayan CalculateSales() alt prosedürünü başlatın .

- Adım 4: ToplamSatış değerini yazdırmak için başka bir alt prosedür oluşturun .

Değer sayısı arttıkça güncellenen totalSales değerini yazdıracaktır . Örneğin, kod çalıştırılırsa totalSales değerini 12000 olarak sunacaktır.

- Adım 5: totalSales'i güncellemek için , daha sonra eklediğimiz tablonun son üç satırının (A4'ten A6'ya) değerlerini ekleyen UpdateSales () adlı başka bir alt prosedürü başlatın .


- Adım 6: Excel'deki VBA Range() fonksiyonunu kullanarak A4:A6 hücrelerinin değerlerini toplayarak totalSales değerini atayın veya güncelleyin.

- Adım 7: Şimdi Ekle düğmesine tıklayın ve global değişkeni çağırmak için başka bir modül açın. Modülde, başka bir alt prosedür olan CallVariable() oluşturun


- Adım 8: B2 hücresindeki toplamSatışlar değerini yazdırın. İşlevi yürütmek için VBA araç çubuğundaki yeşil üçgene basın.

İstenilen toplamSatış değerini yazdırmak için imlecinizi ilgili alt prosedürlerin üzerine getirmeniz önemlidir.
- Adım 9: Çıktı aşağıda gösterilmektedir.


Global totalSales As Integer
Sub CalculateSales()
totalSales = Range(“A1”).Value + Range(“A2”).Value + Range(“A3”).Value
End Sub
Sub PrintSales()
Debug.Print “Total sales for the month: $” & totalSales
End Sub
Sub UpdateSales()
totalSales = Range(“A4”).Value + Range(“A5”).Value + Range(“A6”).Value
End Sub
- In the next module:
Sub Callvariable()
Range(“B2”).Value = totalSales
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- Kapsam: Küresel değişkenler, yerel değişkenlerden daha geniş bir kapsama sahiptir, böylece projedeki herhangi bir modülden veya prosedürden erişilebilir ve değiştirilebilirler. Küresel değişkenlerinizin nerede kullanıldığının farkında olmak ve diğer program parçaları tarafından beklenmedik şekilde değiştirilmediğinden emin olmak önemlidir.
- Adlandırma kuralları: Kodunuzdaki diğer değişkenlerle adlandırma çakışmalarını önlemek için, global değişkenleriniz için bir adlandırma kuralı kullanmak iyi bir uygulamadır. Örneğin, global değişkenler olduklarını açıklamak için önlerine "g_" veya "global_" ekleyebilirsiniz.
- Başlatma: VBA modülü yüklenirken küresel değişkenler varsayılan değerlerine başlatılır. Sayısal veri türleri için bu genellikle 0'dır ve dize veri türleri için boş bir dizedir (" "). Küresel değişkenlerinizi belirli değerlerle başlatmanız gerekiyorsa, modül yüklendiğinde çalışan bir alt prosedürde veya işlevde bunlara değerler atayabilirsiniz.
- Global değişkenler, projede ilk Global değişken tanımlandığında otomatik olarak oluşturulan ayrı bir “Global” modülünde saklanır.
