Динамічний масив VBA (Redim & Redim Preserve)

Цей підручник продемонструє, як використовувати динамічні масиви (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 порожні значення, а потім значення "Фред". Це пов'язано з ЗБЕРЕЖИТИ заява пропущена.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave