Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Объявление динамического массива



В случае когда размер массива заранее неизвестен, VBA позволяет использовать динамические массивы, размеры которых можно изменять во время выполнения. Применение динамических массивов позволяет эффективно управлять памятью, выделяя память под большой массив лишь на то время, когда этот массив используется, а затем освобождая ее.

Создание динамического массива осуществляется следующим образом.

1. Объявляется массив с помощью ключевых слов, используемых при создании массива фиксированного размера. Список размерностей массива остается пустым. Например:

Dim a() as Integer

2.С помощью выполняемого оператора ReDim указывается размерность массива в виде числа или выражения. Синтаксис оператора ReDim аналогичен оператора объявления массива фиксированного размера. Например, размерность массива может быть задана любым из следующих способов:

ReDim a(n) – объявляет массив из n+1 элемента, причем x нужно определить заранее, индекс элемента массива меняется от 0 до x+1;

ReDim a(20) - объявляет массив из 21 элемента, индекс элемента массива меняется от 0 до 21;

ReDim a(1 to 20) - объявляет массив из 20 элементов, индекс элемента массива меняется от 1 до 20.

При объявлении оператора ReDim данные, размещенные в массиве ранее теряются. Это удобно в том случае, если данные вам больше не нужны и вы хотите переопределить размерность массива и подготовить его для размещения новых данных.

Sub prim3()

Dim a(), str_a, i, n

n = Val(InputBox("введите количество элементов массива n:"))

ReDim a(n)

For i = 0 To n

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

Next i

ReDim a(4)

For i = 0 To 4

a(i) = Int(Rnd * 100) + 1

str_anew = str_anew & a(i) & " "

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

str_anew

End Sub

Если вы хотите изменить размер массива, не потеряв при этом данных, то необходимо воспользоваться ключевым словом Preserve. Например, приведенный ниже программный код увеличивает размер массива на единицу без потери хранящихся в массиве данных:

ReDim preserve a(n+1).

Sub prim33()

Dim a(), str_a, i, n

n = Val(InputBox("введите количество элементов массива n:"))

ReDim a(n)

For i = 0 To n

a(i) = Int(Rnd * 100) + 1

str_a = str_a & a(i) & " "

Next i

ReDim Preserve a(n+1)

For i = 0 To n+1

a(n+1)=13

str_anew = str_anew & a(i) & " "

Next i

MsgBox str_a & Chr(10) & Chr(13) & _

str_anew

End Sub





Дата публикования: 2014-11-26; Прочитано: 190 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...