Tablica wielowymiarowa VBA (macierze 2D)

W tym samouczku omówione zostaną tablice dwuwymiarowe i wielowymiarowe w języku VBA.

Tablica wielowymiarowa (macierze 2D)

Tablice wielowymiarowe to tablice zawierające więcej niż jeden wymiar, zwykle dwa lub trzy wymiary, ale tablice mogą mieć do 32 wymiarów.

Zadeklaruj macierz 2D

Aby utworzyć tablicę z więcej niż jednym wymiarem, użyj przecinków, aby zdefiniować każdy oddzielny wymiar:

1 Dim intArr(2,3) jako Integer

Wypełnianie tablicy 2D

Poniższy kod wypełni tablicę 2D, a następnie wypełni wiersze i kolumny arkusza wartościami z tablicy.

1234567891011121314151617181920212223242526 Sub Populate2D()'deklaruj tablicę 2DDim intA(2, 3) As Integer'deklaruj zmienne'Dim rw As IntegerDim col As Integer'wypełnij tablicęintA(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'przeprowadź pętlę przez tablicę i wypełnij ExcelDla rw = 0 do 2Dla kol = 0 do 3Komórki(rw + 1, kol + 1). Wartość = intA(rw, kol)Następny kolorNastępny rwNapis końcowy

Twój arkusz kalkulacyjny Excel powinien zostać wypełniony w następujący sposób.

Wypełnianie tablicy 2D z danych Excel

Poniższy kod wypełni tablicę 2D z arkusza programu Excel, a następnie wypełni inny arkusz danymi.

1234567891011121314151617181920212223242526 Sub Populate2D()„Zadeklaruj arkusze”Dim ws_Source As WorksheetDim ws_Destination As Worksheet'Zadeklaruj tablicęDim wsData(10, 2) jako wariant„Zadeklaruj zmienne”Dim rw jako liczba całkowitaDim col As Integer'odwołaj się do arkusza źródłowegoUstaw ws_Source = Arkusze("Arkusz1")'pobierz informacje z arkusza źródłowego i wypełnij tablicęDla rw = LBound(wsData, 1) To UBound(wsData, 1)Dla col = LBound(wsData, 2) To UBound(wsData, 2)wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).ValueNastępny kolorNastępny rw„odnieś się do arkusza przeznaczenia”Ustaw ws_Destination = Arkusze("Arkusz2")' wypełnij arkusz docelowy z tablicyDla rw = LBound(wsData, 1) To UBound(wsData, 1)Dla col = LBound(wsData, 2) To UBound(wsData, 2)ws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw,col)Następny kolorNastępny rwNapis końcowy

Zmiana rozmiaru za pomocą funkcji ReDim i Re-Dim Preserve

Możesz zmienić rozmiar tablicy za pomocą ReDim.

1234567891011121314151617 Sub Resize2D()'deklaruj tablicęDim varArray() jako Variant'deklaruj rozmiar tablicyReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Księgowy"varArray(1, 1) = "Sekretarka"varArray(1, 2) = "Doktor"'ponownie zadeklaruj rozmiar tablicyReDim varArray(0, 1)'wypełnij ponownie tablicęvarArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"Napis końcowy

Gdy ponownie zadeklarujesz macierz, utracisz wszystkie dane wcześniej przechowywane w macierzy, chyba że użyjesz przycisku Oświadczenie dotyczące zachowania ReDim.

12345678910111213141516 Sub Resize2D()'deklaruj tablicę Dim varArray() jako Variant'deklaruj rozmiar tablicyReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Księgowy"varArray(1, 1) = "Sekretarka"varArray(1, 2) = "Doktor"'ponownie zadeklaruj rozmiar tablicyReDim Preverve varArray(1, 3)'wypełnij tablicę dodatkowymi wartościamivarArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Hydraulik"Napis końcowy

Możesz zmienić rozmiar ostatniego wymiaru tablicy tylko wtedy, gdy chcesz zachować oryginalne dane w tablicy za pomocą Re-Dim Preserve.

Po kliknięciu debugowania błąd zostanie podświetlony, pokazując, że pierwszy wymiar w tablicy nie jest taki sam jak pierwszy wymiar, gdy rozmiar tablicy został pierwotnie zadeklarowany.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave