VBA Çok Boyutlu Dizi (2D Diziler)

Bu öğretici, VBA'da 2 boyutlu ve çok boyutlu dizileri tartışacaktır.

Çok Boyutlu Dizi (2D Diziler)

Çok Boyutlu Diziler, genellikle iki veya üç boyutlu olmak üzere birden fazla boyut içeren dizilerdir, ancak diziler en fazla 32 boyuta sahip olabilir.

2B Dizi Bildirin

Birden fazla boyutu olan bir dizi oluşturmak için, her bir ayrı boyutu tanımlamak için virgül kullanın:

1 Tamsayı olarak intArr(2,3) karart

2B Diziyi Doldurma

Aşağıdaki kod bir 2B diziyi dolduracak ve ardından bir çalışma sayfasının satırlarını ve sütunlarını dizideki değerlerle dolduracaktır.

1234567891011121314151617181920212223242526 Alt Populate2D()'2D diziyi bildirDim intA(2, 3) Tamsayı olarak'değişkenleri bildirTamsayı olarak karart rwDim col Tamsayı olarak'diziyi doldurintA(0, 0) = 45intA(0, 1) = 50intA(0, 2) = 55intA(0, 3) = 60intA(1, 0) = 65intA(1, 1) = 70intA(1, 2) = 75intA(1, 3) = 80intA(2, 0) = 85intA(2, 1) = 90intA(2, 2) = 95intA(2, 3) = 100'dizide dolaşın ve Excel'i doldurunrw = 0 ila 2 içinSütun için = 0 - 3Hücreler(rw + 1, sütun + 1).Value = intA(rw, col)Sonraki sütunSonraki rwAlt Bitiş

Excel elektronik tablonuz daha sonra aşağıdaki gibi doldurulmalıdır.

2B Diziyi Excel verilerinden doldurma

Aşağıdaki kod, bir Excel çalışma sayfasından bir 2B diziyi dolduracak ve ardından verilerle farklı bir sayfa dolduracaktır.

1234567891011121314151617181920212223242526 Alt Populate2D()'Çalışma sayfalarını bildirinDim ws_Source As Çalışma SayfasıDim ws_Destination As Çalışma Sayfası'Diziyi bildirDim wsData(10, 2) Varyant Olarak'Değişkenleri bildirTamsayı olarak karart rwDim col Tamsayı olarak'kaynak sayfasına bakınSet ws_Source = Çalışma Sayfaları("Sayfa1")'kaynak sayfadan bilgi alın ve diziyi doldurunrw = LBound(wsData, 1) için UBound(wsData, 1) içincol = LBound(wsData, 2) için UBound(wsData, 2) içinwsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).ValueSonraki sütunSonraki rw'istasyon sayfasına bakınSet ws_Destination = Çalışma Sayfaları("Sayfa2")' diziden hedef sayfayı doldurrw = LBound(wsData, 1) için UBound(wsData, 1) içincol = LBound(wsData, 2) için UBound(wsData, 2) içinws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw, col)Sonraki sütunSonraki rwAlt Bitiş

ReDim ve Re-Dim Preserve kullanarak yeniden boyutlandırma

kullanarak bir diziyi yeniden boyutlandırabilirsiniz. Yeniden Karartma.

1234567891011121314151617 Alt Yeniden Boyutlandırma2D()'diziyi bildirVarArray() Varyant olarak Dim'dizinin boyutunu bildirReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Toka"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Muhasebeci"varArray(1, 1) = "Sekreter"varArray(1, 2) = "Doktor"'dizinin boyutunu yeniden bildirReDim varArray(0, 1)'diziyi yeniden doldurvarArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Toka"Alt Bitiş

Diziyi yeniden bildirdiğinizde, diziyi kullanmadığınız sürece dizide önceden tutulan tüm verileri kaybedersiniz. ReDim Koru Bildirimi.

12345678910111213141516 Alt Yeniden Boyutlandırma2D()'Dim varArray() dizisini Variant olarak bildirin'dizinin boyutunu bildirReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Toka"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Muhasebeci"varArray(1, 1) = "Sekreter"varArray(1, 2) = "Doktor"'dizinin boyutunu yeniden bildirReDim Preverve varArray(1, 3)'diziyi ek değerlerle doldurunvarArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Tesisatçı"Alt Bitiş

Dizideki orijinal verileri şu şekilde tutmak istiyorsanız, yalnızca Dizinin son boyutunu yeniden boyutlandırabilirsiniz. Yeniden Karartma Koruması.

Hata ayıklamayı tıklattığınızda, dizideki ilk boyutun, dizi boyutu başlangıçta bildirildiğindeki ilk boyutla aynı olmadığını gösteren hata vurgulanacaktır.

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

wave wave wave wave wave