VBA динамичен масив (Redim & Redim Preserve)

Този урок ще покаже как да използвате динамични масиви (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“. Това се дължи на СЪХРАНЯВАЙТЕ изявлението се пропуска.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave