VBA - Diziler

Bir değişkenin bir değeri depolamak için bir kap olduğunu çok iyi biliyoruz. Bazen geliştiriciler, aynı anda tek bir değişkende birden fazla değeri tutabilecek konumdadır. Bir dizi değer tek bir değişkende depolandığında, o zamanarray variable.

Dizi Bildirimi

Diziler, bir dizi değişkeninin bildiriminde parantez kullanılması dışında, bir değişkenin bildirildiği şekilde bildirilir. Aşağıdaki örnekte, dizinin boyutu parantez içinde belirtilmiştir.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Dizi boyutu 5 olarak gösterilse de dizi dizini SIFIR'dan başladığından 6 değer tutabilir.

  • Dizi Dizini negatif olamaz.

  • VBScript Dizileri, bir dizide her tür değişkeni depolayabilir. Dolayısıyla, bir dizi, tek bir dizi değişkeninde bir tamsayı, dize veya karakter depolayabilir.

Bir Diziye Değer Atama

Değerler, atanacak değerlerin her birine karşı bir dizi indeksi değeri belirlenerek diziye atanır. Bir dizge olabilir.

Misal

Bir düğme ekleyin ve aşağıdaki işlevi ekleyin.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Yukarıdaki işlevi çalıştırdığınızda, aşağıdaki çıktıyı üretir.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Çok Boyutlu Diziler

Diziler sadece tek bir boyutla sınırlı değildir, ancak maksimum 60 boyuta sahip olabilirler. İki boyutlu diziler en yaygın kullanılan dizilerdir.

Misal

Aşağıdaki örnekte, çok boyutlu bir dizi 3 satır ve 4 sütunla bildirilmiştir.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Yukarıdaki işlevi çalıştırdığınızda, aşağıdaki çıktıyı üretir.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

ReDim İfadesi

ReDim ifadesi, dinamik dizi değişkenlerini bildirmek ve depolama alanını tahsis etmek veya yeniden tahsis etmek için kullanılır.

Sözdizimi

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Parametre Açıklama

  • Preserve - Son boyutun boyutunu değiştirdiğinizde mevcut bir dizideki verileri korumak için kullanılan isteğe bağlı bir parametre.

  • Varname - Değişkenin adını belirten ve standart değişken adlandırma kurallarına uyması gereken gerekli bir parametre.

  • Subscripts - Dizinin boyutunu belirten gerekli bir parametre.

Misal

Aşağıdaki örnekte, bir dizi yeniden tanımlanmış ve ardından dizinin mevcut boyutu değiştirildiğinde değerler korunmuştur.

Note - Başlangıçta olduğundan daha küçük bir dizi yeniden boyutlandırıldığında, elenen öğelerdeki veriler kaybolur.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Yukarıdaki işlevi çalıştırdığınızda, aşağıdaki çıktıyı üretir.

XYZ
41.25
22
3
4
5
6
7

Dizi Yöntemleri

VBScript içinde, geliştiricilerin dizileri etkili bir şekilde kullanmalarına yardımcı olan çeşitli dahili işlevler vardır. Dizilerle birlikte kullanılan tüm yöntemler aşağıda listelenmiştir. Detaylı bilgi almak için lütfen metod ismine tıklayınız.

Sr.No. İşlev ve Açıklama
1 LBound

Verilen dizilerin en küçük alt simge durumuna karşılık gelen bir tamsayı döndüren bir İşlev.

2 UBound

Verilen dizilerin en büyük alt simge değerine karşılık gelen bir tamsayı döndüren İşlev.

3 Bölünmüş

Belirtilen sayıda değer içeren bir dizi döndüren bir Function. Bir sınırlayıcıya göre ayırın.

4 Katılmak

Bir dizide belirtilen sayıda alt dizeyi içeren bir dize döndüren bir İşlev. Bu, Bölme Yönteminin tam tersi bir işlevdir.

5 Filtrele

Belirli bir filtre kriterine göre bir dize dizisinin bir alt kümesini içeren sıfır tabanlı bir dizi döndüren bir Function.

6 IsArray

Girdi değişkeninin bir dizi olup olmadığını gösteren bir boolean değeri döndüren bir Function.

7 Sil

Dizi değişkenleri için ayrılmış belleği kurtaran bir İşlev.