У цьому підручнику буде розглянуто 2-d та багатовимірні масиви у VBA.
Багатовимірний масив (2D масиви)
Багатовимірні масиви-це масиви, які містять більше ніж один вимір, зазвичай два або три виміри, але масиви можуть мати до 32 вимірів.
Оголошення 2D -масиву
Щоб створити масив з більш ніж одним виміром, використовуйте коми для визначення кожного окремого виміру:
1 | Затемнити intArr (2,3) як ціле число |
Заповнення 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 = Робочі листи ("Аркуш1")'отримати інформацію з вихідного аркуша та заповнити масивДля 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 = Робочі листи ("Аркуш2")'заповнити аркуш призначення з масивуДля 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) = "Фред пряжка"varArray (0, 2) = "Джейн Ейр"varArray (1, 0) = "Бухгалтер"varArray (1, 1) = "Секретар"varArray (1, 2) = "Лікар"'повторно оголосити розмір масивуReDim varArray (0, 1)'повторно заповнити масивvarArray (0, 0) = "Мел Сміт"varArray (0, 1) = "Фред пряжка"End Sub |
При повторному оголошенні масиву ви втратите будь -які дані, які раніше зберігалися в масиві, якщо ви не використовуєте Заява про збереження ReDim.
12345678910111213141516 | Sub Resize2D ()'оголосити масив Dim varArray () як Variant'оголосити розмір масивуReDim varArray (1, 2)varArray (0, 0) = "Мел Сміт"varArray (0, 1) = "Фред пряжка"varArray (0, 2) = "Джейн Ейр"varArray (1, 0) = "Бухгалтер"varArray (1, 1) = "Секретар"varArray (1, 2) = "Лікар"'повторно оголосити розмір масивуReDim Preverve varArray (1, 3)'заповнити масив додатковими значеннямиvarArray (0, 3) = "Роб Барнс"varArray (1, 3) = "Сантехнік"End Sub |
Ви можете змінити розмір останнього виміру масиву, лише якщо потрібно зберегти вихідні дані в масиві за допомогою Заповідник Re-Dim.
Коли ви натискаєте налагодження, помилка буде виділена, показуючи, що перший вимір у масиві не такий, як перший вимір, коли розмір масиву був оголошений спочатку.