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şkenin 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 bildirdiğimiz gibi, dizi adını da "Dim" kullanarak bildirmemiz 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ı sonuç 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 bu değil. Alt değere ve üst değere önceden karar vermeyeceğiz; bunun yerine, sadece dizi adını tanımlar ve veri türünü atarız.

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

Dizi adını dinamik hale getirmek için, onu önce "Dim" kelimesiyle açıklamamız gerekir, ancak dizinin büyüklüğüne önceden karar vermeyin. Parantez () içinde boş değerleri olan bir diziyi adlandırıyoruz. Dizi boyut içermediğinde, dinamik bir 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 depolanan herhangi bir değer, yani "Dim" ifadesi kullanılarak, boş kalır ve "ReDim" kullanarak bildirdiğimiz boyut, dizinin yeni boyutu olur.

VBA Redim Beyanı kullanma örnekleri

Ö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 eşittir, 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ücrelerinde almalıyız.

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

Dizi adına değerler atandıktan sonra, "ReDim Preserve" kelimesini kullanarak prosedürün herhangi bir anında yeniden boyutlandırabiliriz.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

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 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.

"Preserve" kelimesini kullanmamızın nedeni, çünkü dizi prosedürdeki eski dizi değerlerini hatırlamalıdır.

“Koru” kelimesini görmezden geldiğiniz an, eski değerleri hatırlamayacaktır.

Burada Hatırlanması Gereken Şeyler

  • ReDim, çok sayıda değeri değil, yalnızca dizinin son değerini tutabilir. Örneğin, "ReDim Preserve MyArray (4 ila 5)" kodunu kullanamayız. Bu hatayı atacaktır.
  • Statik dizileri yeniden boyutlandıramayız. Parantez içindeki dizinin boyutunu atadığınız an statik bir dizi haline gelir.
  • ReDim kullanarak veri türünü değiştiremeyiz. Dizi, diziyi bildirirken atadığımız veri türü ne olursa olsun tutabilir.

Ilginç makaleler...