VBA ReDim | Dinamik Dizileri VBA ReDim Preserve kullanarak yönetin

Excel VBA ReDim Beyanı

VBA Redim ifadesi dim ifadesine benzer, ancak fark, daha fazla depolama alanını depolamak veya tahsis etmek veya bir değişken veya bir dizinin sahip olduğu depolama alanını azaltmak için kullanılmasıdır, şimdi ifade ile kullanılan iki önemli husus var Preserve, eğer bu ifade ile preserve kullanılırsa, o zaman farklı boyutta yeni bir dizi oluşturur ve eğer bu ifade ile koruma kullanılmazsa, o zaman sadece mevcut değişkenin dizi boyutunu değiştirir.

Diziler, VBA kodlamasının önemli bir parçasıdır. Dizileri kullanarak, tanımladığımız aynı değişkende birden fazla değer saklayabiliriz. "Dim" kelimesini kullanarak değişkeni nasıl tanımladığımıza benzer şekilde, dizi adını da "Dim" kullanarak tanımlamamız gerekir.

Dizi adını bildirmek için önce tanımlayacağımız dizi türünü belirlememiz gerekir. Dizilerde 5 tipimiz var.

  1. Statik Dizi
  2. Dinamik Dizi
  3. Tek Boyutlu Dizi
  4. İki Boyutlu Dizi
  5. Çok Boyutlu Dizi

Excel'deki statik dizide, değişkeni bildirirken dizinin alt değerine ve üst değerine önceden karar vereceğiz. Örneğin, aşağıdaki örneğe bakın.

Kod:

 Sub ReDim_Example1 () Dim MyArray (1 - 5) As String End Sub 

Burada MyArray , 1'den 5'e kadar değeri tutabilen dizinin adıdır. MyArray aşağıdaki gibi 5 farklı sonucu içinde tutabilir.

Kod:

 Sub ReDim_Example1 () Dim MyArray (1 ila 5) As String MyArray (1) = "Merhaba" MyArray (2) = "İyi" MyArray (3) = "Sabah" MyArray (4) = "Bir" MyArray (5) var = "Güzel Gün" Son Abonelik 

ReDim İfadeli Dinamik Dizi

Ancak Dinamik dizide durum böyle değildir, alt değere ve üst değere önceden karar vermeyeceğiz, bunun yerine sadece dizi adını tanımlayıp veri türünü atayacağız.

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Dizi adını dinamik yapmak için önce onu "Dim" kelimesiyle açıklamamız gerekir, ancak dizinin büyüklüğüne önceden karar vermemeliyiz. Parantez () içinde boş değerleri olan bir diziyi adlandırıyoruz. Dizi boyut içermediğinde dinamik dizi olarak değerlendirilir.

Dim MyArray () As String

Parantez içindeki dizinin boyutundan bahsettiğiniz an statik bir dizi haline gelir. Dim MyArray (1-5) As String

Dinamik dizide, kodun sonraki satırında "ReDim" kelimesini kullanarak her zaman dizi boyutunu yeniden boyutlandırıyoruz.

ReDim MyArray (1-6) As String

Önceki adımlarda dizi adına saklanan herhangi bir değer, yani "Dim" ifadesini kullanarak boş durur ve "ReDim" kullanarak tanımladığımız boyut, dizinin yeni boyutu olur.

VBA Redim Beyanı kullanma örnekleri

Bu VBA ReDim Excel Şablonunu buradan indirebilirsiniz - VBA ReDim Excel Şablonu

Örnek 1

Pratik olarak "ReDim" ifadesini kullanma örneğine bir göz atın. "ReDim" uygulamak için aşağıdaki adımları izleyin.

Adım 1: Önce bir makro adı oluşturun.

Adım 2: Bir dizi adını bir dizge olarak bildirin.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Adım 3: Şimdi "Redim" kelimesini kullanın ve dizinin boyutunu atayın.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 ila 3) End Sub 

Adım 4: Şimdi dizi adı “MyArray” burada 3'e kadar değer tutabilir. Değeri bu 3 diziye aşağıdaki gibi atayın.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 ila 3) MyArray (1) = "Hoş Geldiniz" MyArray (2) = "" MyArray (3) = "VBA" End Sub 

Dolayısıyla, ilk dizi "Hoş Geldiniz" sözcüğüne, ikinci dizi "to" sözcüğüne ve üçüncü dizi "VBA" sözcüğüne eşittir.

Adım 5: Şimdi bu dizi değerlerini hücrelerde saklayın.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 ila 3) MyArray (1) = "Hoş Geldiniz" MyArray (2) = "" MyArray (3) = "VBA" Range ("A1"). Value = Dizim (1) Aralık ("B1"). Değer = Dizim (2) Aralık ("C1"). Değer = Dizim (3) Son Alt 

Adım 6: Bu kodu çalıştırırsanız, bu değerleri sırasıyla A1, B1 ve C1 hücresinde almalıyız.

Örnek 2 - Eski Değerleri Hatırlarken Dizi Boyutunu Yeniden Boyutlandırın.

Dizi adı değer atandıktan sonra, “ReDim Preserve” sözcüğünü kullanarak prosedürde herhangi bir zamanda yeniden boyutlandırabiliriz.

Zaten bir dizi adı tanımladığınızı ve bu dizi adına aşağıdaki gibi değerler atadığınızı varsayalım.

Şimdi dizi uzunluğunu 2 yani 5 artırmak istiyorsunuz. Bu durumda, eski değerleri de hatırlamak için dizi uzunluğunu yeniden boyutlandırmak için VBA "ReDim Preserve" kelimesini kullanabiliriz.

Kod:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now we can assign two more values to the array.

Code:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now store these values in cells.

Code:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now run the macro and see what happens

So we got the new word in the D1 cell.

The reason why we need to use the word “preserve” because array should remember the old array values in the procedure.

The moment you ignore the word “preserve” it will not remember old values.

Things to Remember Here

  • ReDim can only hold the last value of the array, not the many values. For example, we cannot use this code “ReDim Preserve MyArray(4 to 5)”, this will throw the error.
  • We cannot ReDim static arrays. The moment you assign the size of the array inside the parenthesis it becomes a static array.
  • Using ReDim we cannot change the data type. The array can hold whatever the data type we have assigned while declaring the array.