Този урок ще обсъди двумерни и многоизмерни масиви във 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.
Когато щракнете върху отстраняване на грешки, грешката ще бъде подчертана, показваща, че първото измерение в масива не е същото като първото измерение, когато размерът на масива е бил първоначално деклариран.