VBA многоизмерен масив (2D масиви)

Този урок ще обсъди двумерни и многоизмерни масиви във VBA.

Многоизмерен масив (2D масиви)

Многоизмерните масиви са масиви, които съдържат повече от едно измерение, обикновено две или три измерения, но масивите могат да имат до 32 измерения.

Декларирайте 2D масив

За да създадете масив с повече от едно измерение, използвайте запетаи, за да определите всяко отделно измерение:

1 Dim intArr (2,3) като цяло число

Попълване на 2D масив

Кодът по -долу ще попълни 2D масив и след това ще попълни редовете и колоните на работен лист със стойностите в масива.

1234567891011121314151617181920212223242526 Sub Populate2D ()'декларирайте 2D масиваDim intA (2, 3) Като цяло число'деклариране на променливиDim rw като цяло числоDim col като цяло число'попълнете масива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'цикъл през масива и попълване на ExcelЗа rw = 0 до 2За col = 0 до 3Клетки (rw + 1, col + 1). Стойност = intA (rw, col)Следващ колСледващ rwEnd Sub

След това електронната ви таблица в Excel трябва да бъде попълнена, както следва.

Попълване на 2D масив от данни на Excel

Кодът по -долу ще попълни 2D масив от работен лист на Excel и след това ще попълни различен лист с данните.

1234567891011121314151617181920212223242526 Sub Populate2D ()„Декларирайте работните листовеЗатъмнете ws_Source като работен листЗатъмнете ws_Destination като работен лист'Декларирайте масиваDim wsData (10, 2) Като вариант'Декларирайте променливитеDim rw като IntegerDim col като цяло число'вижте източникаЗадайте ws_Source = Работни листове ("Sheet1")'вземете информацията от изходния лист и попълнете масиваЗа rw = LBound (wsData, 1) Към UBound (wsData, 1)За col = LBound (wsData, 2) Към UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Отместване (rw, col).Следващ колСледващ rw'вижте дестинационния листЗадайте ws_Destination = Работни листове ("Sheet2")'попълнете целевия лист от масиваЗа rw = LBound (wsData, 1) Към UBound (wsData, 1)За col = LBound (wsData, 2) Към UBound (wsData, 2)ws_Destination.Range ("A1"). Офсет (rw, col) .Value = wsData (rw, col)Следващ колСледващ rwEnd Sub

Преоразмеряване с помощта на ReDim и Re-Dim Preserve

Можете да преоразмерите масив, като използвате ReDim.

1234567891011121314151617 Sub Resize2D ()'декларирайте масиваDim varArray () като Variant'декларирайте размера на масиваReDim varArray (1, 2)varArray (0, 0) = "Мел Смит"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Счетоводител"varArray (1, 1) = "Секретар"varArray (1, 2) = "Доктор"'предекларирайте размера на масиваReDim varArray (0, 1)'повторно попълване на масиваvarArray (0, 0) = "Мел Смит"varArray (0, 1) = "Fred Buckle"End Sub

Когато предекларирате масива, ще загубите всички данни, които преди са били държани в масива, освен ако не използвате Изявление за запазване на ReDim.

12345678910111213141516 Sub Resize2D ()'декларирайте масива Dim varArray () като вариант'декларирайте размера на масиваReDim varArray (1, 2)varArray (0, 0) = "Мел Смит"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Счетоводител"varArray (1, 1) = "Секретар"varArray (1, 2) = "Доктор"'предекларирайте размера на масиваReDim Preverve varArray (1, 3)'попълнете масива с допълнителни стойностиvarArray (0, 3) = "Роб Барнс"varArray (1, 3) = "Водопроводчик"End Sub

Можете да промените размера на последното измерение на масив само ако искате да запазите първоначалните данни в масива с Re-Dim Preserve.

Когато щракнете върху отстраняване на грешки, грешката ще бъде подчертана, показваща, че първото измерение в масива не е същото като първото измерение, когато размерът на масива е бил първоначално деклариран.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave