Този урок ще покаже как да използвате динамични масиви (redim и redim save) във VBA.
Динамичен масив
Динамични масиви са масиви, които могат да променят размерите (за разлика от статични масиви, които са статични).
За да декларирате динамичен масив, декларирате масива, но пропускате размера на масива:
1 | Dim strNames () Като String |
След това, преди да можете да присвоите стойности на вашия масив, трябва да използвате ReDim Statement, за да зададете масива до желания от вас размер:
1 | ReDim strNames (1 до 3) |
Сега, когато искате да промените размера на масива си, просто използвайте ReDim (или ReDim Preserve, както ще научим по -долу).
Динамични вариационни масиви
Забележка: Вариантните масиви са малко по -различни. С вариантните масиви не е необходимо да задавате размера на масива с ReDim, преди да присвоите стойности.
12345678 | Sub TestArray ()'декларирайте променливатаDim varNames () Като вариант'попълнете масиваvarNames () = Array ("Фред", "Уилма", "Барни", "Бети")'върнете стойноститеПрисъединяване към MsgBox (varNames, ",")End Sub |
Redim срещу Redim Preserve
The ReDim изявлението преоразмерява масив, изчистване всички съществуващи ценности.
The ReDim Preserve изявлението преоразмерява масив, съхраняемост („Запазване“) на всички съществуващи стойности.
Използване на ReDim
На практика преоразмеряването на масив с ReDim изглежда така:
123456789101112 | Sub TestReDim ()'декларирайте низовия масивDim strNames () Като String'преоразмерете низовия масив, за да може да съдържа 3 стойностиReDim strNames (1 до 3)'попълнете масива с 3 именаstrNames (1) = "Мел"strNames (2) = "Стив"strNames (3) = "Боб"'покажете резултата в непосредствения прозорецDebug.Print Join (strNames, vbCrLf)End Sub |
Използване на ReDim Preserve
В този пример ще използваме ReDim за задаване на първоначалния динамичен масив и след това ReDim Preserve за преоразмеряване на масива, съхраняемост оригиналните стойности:
1234567891011121314151617 | Sub TestReDim ()'декларирайте низовия масивDim strNames () Като String'преоразмерете низовия масив, за да може да съдържа 3 стойностиReDim strNames (1 до 3)'попълнете масиваstrNames (1) = "Мел"strNames (2) = "Стив"strNames (3) = "Боб"'покажете резултата в непосредствения прозорецDebug.Print Join (strNames, vbCrLf)„повторете, но предварително запазете даннитеReDim Запазване на strNames (1 до 4)strNames (4) = "Фред"'покажете резултата в непосредствения прозорецDebug.Print Join (strNames, vbCrLf)End Sub |
Ако не използвате СЪХРАНЯВАЙТЕ изявление, ще загубите данните, които са били в масива преди това.
В непосредствения прозорец по -горе масивът населява Мел, Стив и Боб. Когато беше деклариран отново, той премахна тези стойности и вместо това върна 3 празни стойности и след това стойността „Fred“. Това се дължи на СЪХРАНЯВАЙТЕ изявлението се пропуска.