Bir önceki dersimizde belirli verilerin yazılabildiği ancak birden fazla değer içeremediği değişkenlere bakmıştık. Bu sınırlamayı aşmak için VBA'de birden fazla değeri saklayabilen diziler vardır.
Aşağıda farklı dizilerin bazı örnekleri verilmiştir:
Sub variables() 'Bir değişken bildirme örneği Dim var1 As String '1 boyutlu bir dizi bildirme örneği Dim array1(4) As String '2 boyutlu bir dizi bildirme örneği Dim array2(4, 3) As String '3 boyutlu bir dizi bildirme örneği Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Tek boyutlu bir dizi, tek sütundan oluşan bir tablo olarak düşünülebilir. Dizi1(4) dizisi 5 kayıt tutabilen tek boyutlu bir dizidir. Neden 5? Çünkü dizideki kayıt sayıları sıfırdan başlar (0, 1, 2, 3, 4).
Şimdi 2 boyutlu bir diziyi ele alalım:
Dim array2(4, 3) As String
Zaten 5 satır ve 4 sütundan oluşan bir tablo gibi görünecek:
'Renkli hücrelere değer atama array2(0, 0) = "Kırmızı hücredeki değer" array2(4, 1) = "Yeşil hücredeki değer" array2(2, 3) = "Mavi hücredeki değer"
Değişkenler gibi sabitler de değerleri depolamak için kullanılabilir ancak aradaki fark, değerlerin değişememesidir. Değerin tekrarlanmasını önlemek için bir sabit ekleyebiliriz, örneğin 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Bu, kodun anlaşılmasını ve düzenlenmesini kolaylaştırır. Ayrıca sabitin değerini oldukça basit bir şekilde değiştirmenize de olanak tanır:
Sub const_example() 'Bir sabit bildirmek + bir değer atamak Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Değişkenlerin kapsamı
Eğer bir değişken bir prosedürün başında bildirilmişse (Sub), o zaman yalnızca bu prosedürde kullanılabilir. Prosedür yürütüldükten sonra değişkenin değeri artık kullanılamayacaktır.
Sub procedure1() Dim var1 As Integer '=> Değişken yalnızca bu prosedürde geçerlidir End Sub Sub procedure2() '=> var1 burada kullanılamaz End Sub
Bir değişkeni herhangi bir modül prosedüründe kullanmak için onu modülün en başında bildirmemiz yeterlidir. Ve bunun gibi bir değişken bildirirseniz, çalışma kitabı kapatılana kadar kullanılabilir olacaktır.
Dim var1 As Integer Sub procedure1() '=> var1 burada kullanılabilir End Sub Sub procedure2() '=> var1 burada da kullanılabilir End Sub
Kitabın tüm modüllerinde aynı değişkeni kullanmak istiyorsanız, önceki örnekte yalnızca Dim'yi Global ile değiştirmelisiniz:
Global var1 As Integer
Göründüğü prosedürü yürüttükten sonra bir değişkeni kullanmak için Dim'yi Static ile değiştirin:
Sub procedure1() Static var1 As Integer End Sub
Prosedürdeki tüm değişkenlerin değerlerini kullanmak için, Sub'den önce Static'yi ekleyin:
Static Sub procedure1() Dim var1 As Integer End Sub
İşte kendi türünüzü nasıl oluşturabileceğinize dair hızlı bir örnek:
'Değişken türü oluşturma Type customers last_name As String first_name As String End Type Sub variables() 'Bir değişkenin bildirimi Dim cust1 As customers 'Müşteri1'e değer atama cust1.last_name = "Smith" cust1.first_name = "John" 'Kullanım örneği MsgBox cust1.last_name & " " & cust1.first_name End Sub