VBA Dinamik Dizisi (Redim & Redim Preserve)

Bu öğretici, VBA'da dinamik dizilerin (redim ve redim koru) nasıl kullanılacağını gösterecektir.

Dinamik Dizi

Dinamik Diziler boyutları değiştirebilen dizilerdir (aksine statik diziler, statik olan).

Dinamik bir diziyi bildirmek için diziyi bildirirsiniz, ancak dizi boyutunu atlarsınız:

1 Dim strNames() As String

Ardından, dizinize değer atamadan önce diziyi istediğiniz boyuta ayarlamak için ReDim İfadesini kullanmanız gerekir:

1 ReDim strNames(1 ila 3)

Şimdi, dizi boyutunuzu değiştirmek istediğinizde, ReDim'i (veya aşağıda öğreneceğimiz gibi ReDim Preserve) kullanmanız yeterlidir.

Dinamik Varyant Dizileri

Not: Varyant Dizileri biraz farklıdır. Varyant dizilerde, değerleri atamadan önce dizi boyutunu ReDim ile ayarlamanız gerekmez.

12345678 Alt TestArray()'değişkeni bildirDim varNames() Varyant Olarak'diziyi doldurvarNames() = Array("Fred", "Wilma", "Barney", "Betty")'değerleri döndürMsgBox Join(varNames, ",")Alt Bitiş

Redim vs. Redim Koru

NS Yeniden Karartma deyimi bir diziyi yeniden boyutlandırır, temizleme mevcut tüm değerler.

NS ReDim Koru deyimi bir diziyi yeniden boyutlandırır, tutmak (“korumak”) mevcut tüm değerleri.

ReDim'i kullanma

Uygulamada, bir diziyi ReDim ile yeniden boyutlandırmak şöyle görünür:

123456789101112 Alt TestReDim()'dize dizisini bildirDim strNames() As String'3 değeri tutabilmek için dize dizisini yeniden boyutlandırınReDim strNames(1 ila 3)'diziyi 3 adla doldurunstrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'sonucu hemen pencerede gösterDebug.Print Join(strNames, vbCrLf)Alt Bitiş

ReDim Korumasını Kullanma

Bu örnekte, ilk dinamik diziyi ayarlamak için ReDim'i ve ardından diziyi yeniden boyutlandırmak için ReDim Preserve'ı kullanacağız, tutmak orijinal değerler:

1234567891011121314151617 Alt TestReDim()'dize dizisini bildirDim strNames() As String'3 değeri tutabilmek için dize dizisini yeniden boyutlandırınReDim strNames(1 ila 3)'diziyi doldurstrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'sonucu hemen pencerede gösterDebug.Print Join(strNames, vbCrLf)'redim ama verileri koruReDim strNames'i koru(1 ila 4)strNames(4) = "Fred"'sonucu hemen pencerede gösterDebug.Print Join(strNames, vbCrLf)Alt Bitiş

kullanmazsanız KORUMAK deyimi, daha önce dizide bulunan verileri kaybedersiniz.

Yukarıdaki pencerede, dizi Mel, Steve ve Bob'u doldurdu. Yeniden bildirildiğinde, bu değerleri kaldırır ve bunun yerine 3 boş değer ve ardından 'Fred' değerini döndürür. Bunun nedeni KORUMAK ifadesi atlanıyor.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave