Цей підручник продемонструє, як використовувати динамічні масиви (redim і redim зберегти) у VBA.
Динамічний масив
Динамічні масиви - це масиви, які можуть змінювати розміри (на відміну від статичні масиви, які є статичними).
Щоб оголосити динамічний масив, ви оголошуєте масив, але опускаєте розмір масиву:
1 | Dim strNames () Як рядок |
Потім, перш ніж ви зможете присвоїти значення вашому масиву, ви повинні використати оператор ReDim, щоб встановити масив на потрібний розмір:
1 | ReDim strNames (від 1 до 3) |
Тепер, коли ви захочете змінити розмір масиву, просто використовуйте ReDim (або ReDim Preserve, про що ми дізнаємося нижче).
Динамічні варіанти масивів
Примітка: Варіантні масиви дещо відрізняються. З варіантами масивів вам не потрібно встановлювати розмір масиву за допомогою ReDim перед призначенням значень.
12345678 | Sub TestArray ()'оголосити зміннуDim varNames () Як варіант'заповнити масивvarNames () = Array ("Фред", "Вілма", "Барні", "Бетті")'повернути значенняMsgBox Join (varNames, ",")End Sub |
Redim проти Redim Preserve
The ReDim оператор змінює розмір масиву, розчищення всі існуючі цінності.
The Заповідник ReDim оператор змінює розмір масиву, утримання ("Збереження") усіх існуючих цінностей.
Використання ReDim
На практиці зміна розміру масиву за допомогою ReDim виглядає так:
123456789101112 | Sub TestReDim ()'оголосити рядковий масивDim strNames () Як рядок'змінити розмір рядкового масиву, щоб мати можливість зберігати 3 значенняReDim strNames (від 1 до 3)'заповніть масив трьома іменамиstrNames (1) = "Мел"strNames (2) = "Стів"strNames (3) = "Боб"'показати результат у безпосередньому вікніDebug.Print Join (strNames, vbCrLf)End Sub |
Використання ReDim Preserve
У цьому прикладі ми будемо використовувати ReDim для встановлення початкового динамічного масиву, а потім ReDim Preserve для зміни розміру масиву, утримання вихідні значення:
1234567891011121314151617 | Sub TestReDim ()'оголосити рядковий масивDim strNames () Як рядок'змінити розмір рядкового масиву, щоб мати можливість зберігати 3 значенняReDim strNames (від 1 до 3)'заповнити масивstrNames (1) = "Мел"strNames (2) = "Стів"strNames (3) = "Боб"'показати результат у безпосередньому вікніDebug.Print Join (strNames, vbCrLf)'поновіть, але збережіть даніReDim Зберегти прізвища (від 1 до 4)strNames (4) = "Фред"'показати результат у безпосередньому вікніDebug.Print Join (strNames, vbCrLf)End Sub |
Якщо ви не використовуєте ЗБЕРЕЖИТИ ви втратите дані, які раніше були в масиві.
У безпосередньому вікні вище масив заповнив Мела, Стіва та Боба. Після повторного оголошення він видалив ці значення і замість цього повернув 3 порожні значення, а потім значення "Фред". Це пов'язано з ЗБЕРЕЖИТИ заява пропущена.