Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену ПО 2014.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
211 Кб
Скачать
☆

Vba одномерный массив

Одномерные VBA массивы представляют из себя список, который хранит данные заданного типа, например:

Dim MyArr(2) As Integer

Тут мы объявили одномерный VBA массив, состоящий из трех элементов (нумерация элементов начинается с нуля) и задали целый тип данных. Можно и не задавать тип данных, например:

Dim MyArr(2)

Для примера, создадим форму с темя текстовыми метками (объект Label) и одной кнопкой и попишем в редакторе кода:

Private Sub CommandButton1_Click()

Dim MyArr(2) As Integer

    MyArr(0) = 10

    MyArr(1) = 20

    MyArr(2) = 30

    Label1.Caption = "Значение: " & MyArr(0)

    Label2.Caption = "Значение: " & MyArr(1)

    Label3.Caption = "Значение: " & MyArr(2)

End Sub

 

Private Sub UserForm_Initialize()

    Label1.Caption = ""

    Label1.FontSize = 15

    Label1.ForeColor = vbBlue

 

    Label2.Caption = ""

    Label2.FontSize = 15

    Label2.ForeColor = vbRed

 

    Label3.Caption = ""

    Label3.FontSize = 15

    Label3.ForeColor = vbGreen

    CommandButton1.Caption = "Значения"

End Sub

Тут при нажатии на кнопку происходит объявление одномерного VBA массива с тремя целыми значениями, далее через порядковый номер происходит присвоение данные и их запись в свойство Caption. Массив не обязательно должен хранить однотипные данные, например:

Private Sub CommandButton1_Click()

Dim MyArr(2)

    MyArr(0) = "Строка"

    MyArr(1) = #12/30/1986#

    MyArr(2) = 124.55

    Label1.Caption = "Значение: " & MyArr(0)

    Label2.Caption = "Значение: " & MyArr(1)

    Label3.Caption = "Значение: " & MyArr(2)

End Sub

В данном случае мы присвоили значения разных типов (строка, дата и вещественное число), при этом, сам тип данных для массива VBA мы не указывали, иначе, произошла бы ошибка Type mismatch (несоответствие типов).

Vba многомерный и двумерный массив

Помимо одномерных, можно объявлять и многомерные массивы до 60 измерений, например:

Private Sub CommandButton1_Click()

Dim MyArr(0 To 1, 0 To 3) As Integer

    MyArr(0, 0) = 10

    MyArr(0, 1) = 11

    MyArr(0, 2) = 12

    MyArr(0, 3) = 13

 

    MyArr(1, 0) = 20

    MyArr(1, 1) = 21

    MyArr(1, 2) = 22

    MyArr(1, 3) = 23

    Label1.Caption = MyArr(0, 0) & MyArr(0, 1) & MyArr(0, 2) & MyArr(0, 3)

    Label2.Caption = MyArr(1, 0) & MyArr(1, 1) & MyArr(1, 2) & MyArr(1, 3)

End Sub

Строка Dim MyArr(0 To 1, 0 To 3) As Integer говорит, что мы объявили двумерный VBA массив размером два на четыре, при этом, мы сразу указали нумерацию, для сравнения:

Dim MyArr(2 To 3, 3 To 5) As Integer

    MyArr(2, 3) = 10

    MyArr(2, 4) = 11

    MyArr(2, 5) = 12

 

    MyArr(3, 3) = 20

    MyArr(3, 4) = 21

    MyArr(3, 5) = 22

    Label1.Caption = MyArr(2, 3) & MyArr(2, 3) & MyArr(2, 5)

    Label2.Caption = MyArr(3, 3) & MyArr(3, 4) & MyArr(3, 5)

Хотя можно прописать и так MyArr(2,3), в этом случае нумерация будет идти от нуля автоматически.

Динамические массивы VBA – довольно часто может возникнуть ситуация, когда точно количество элементов массива не известно, или же его размер надо изменить. При объявлении динамического массива его размер не указывается:

Dim MyArr ()

Для изменения размера используется ключевое слово ReDim:

ReDim MyArr(6)

ReDim автоматически удаляет все предыдущие значения, что бы они сохранились (например, предыдущий размер составлял 4 элемента и хранил данные, а теперь надо расширить размер до 6 элементов, сохранив предыдущие значения), используется ключевое слово Preserve:

ReDim Preserve MyArr(10)

Оператор Option Base 1 – данные оператор позволяет указать, что бы нумерация элементов начиналась не с нуля, а с единицы.

Некоторые функции – язык VBA предоставляет в распоряжение пользователя функции для работы с массивами, например:

Array() – данная функция VBA позволяет сразу задавать значения одномерного массива:

Dim MyArr

MyArr = Array(10, 22, 100, 5)

Видим, что сначала надо объявить переменную, а уже потом использовать функцию для формирования одномерного VBA массива.

Erase – очищает содержимое:

Erase MyArr

  1. Типовые задачи обработки одномерных массивов. Примеры.

  2. Многомерные массивы (на примере объекта Cells). Примеры.

  3. Функции и инструкции для работы с массивами. Примеры.

  4. Собственные процедуры и функции. Описание и вызов. Способы задания аргументов (по ссылке, по значению, обязательные, необязательные, по умолчанию, присваивание). Примеры.

  5. Работа с файлами данных в VBA. Примеры.

В билете 1 вопрос и 1 задача.