Массив есть множество однотипных элементов, имеющих одинаковое имя и отличающихся своим положением.
Положение элемента в масиве задаётся идексом.
Статические массивы.
Dim Имя(N) As <тип элементов > ,где N -максимальное значение индекса
Dim Имя(N,M) As <тип данных > ,где N –максималььное количество строк,
M – максимальное количество столбцов
Dim A(12) As Integer
или Static A(12) As Integer
определяет элементы A(0), A(1), A(2)……..A(12)
Dim B(3,3) As Integer
определяет элементы B(0,0), B(0,1), B(0,2), B(0,3),B(1,0), B(1,1) …. B(3,3)
Dim C(1 To 10)
определяет элементы C(0), C (1), C (2)…….. C (12)
Dim D(1 To 3, 1 To 3)
определяет элементы D(1,1), B(1,2), B(1,3), B(2,1),B(2,2), …. B(3,3)
Заполнение массива элементами можно производить следующими способами
1 Оператором присваивания
Dim Фрукты(3) As String
‘ Здесь 3 – максимальный номер элемента
Фрукты(0)=“Яблоки”
Фрукты(1)=“Груши”
Фрукты(2)=“Ананасы”
Фрукты(3)=“Персики”
2 В цикле
Dim I As Integer
Dim N(3) As Integer
Randomize
For I= 0 To 3
N(I)=Int(Rnd*10+1)
Next I
Динамические массивы.
Бывает так, что заранее точный размер массива неизвестен, и необходимо иметь возможность изменять его размер во время исполнения программы. Чтобы изменить размер массива динамически, используется оператор Redim
По умолчанию, когда изменяется размер массива, все его элементы удаляются. Если необходимо оставить текущие значения элементов массива, то нужно использовать ключевое слово Preserve с оператором Redim, что и сделано в этом примере.
Dim Фрукты () As String
Redim Фрукты (3)
Фрукты(0)=“Яблоки”
Фрукты(1)=“Груши”
Фрукты(2)=“Ананасы”
Фрукты(3)=“Персики”
Redim Preserve Фрукты (4)
Фрукты (4)=“Сливы”
Для освобождения памяти, занимаемой динамическим массивом, можно использовать инструкцию Erase
Заполнение динамического массива с помощью функции Array:
Dim Фрукты(3) As String
‘ Здесь 3 – максимальный номер элемента
Фрукты=Array(“Яблоки”, “Груши”, “Сливы”, “Ананасы”)
Задание
Создайте в Excel форму
Private Sub CmdButton2_Click()
With LstBox1
‘Заполнение списка прм помощи массива
.List = Array(1, 5, 6, 3, 13, 14, 8, 7, 2, 9, 4, 10, 15, 11, 12)
‘Ширина колонки
.ColumnWidths = 1
‘Режим выбора нескольких элементов из списка
.MultiSelect = fmMultiSelectMulti
End With
End Sub
‘поиск максимума
Private Sub CmdButton3_Click()
Dim I As Integer, Max As Integer
‘свойство List(Index)возвращает или задаёт
‘элемент списка с указанным индексом
‘первый элемент имеет индеск 0
Max = LstBox1.List(0)
‘свойство ListCount
‘возвращает число элементов списка ListBox
For I = 1 To LstBox1.ListCount – 1
If Max < LstBox1.List(I) Then Max = LstBox1.List(I)
Next I
TxtBox1.Value = Max
End Sub
‘сумма элементов списка
Private Sub CmdButton4_Click()
Dim I As Integer, Sum As Integer
Sum = 0
For I = 0 To LstBox1.ListCount –