Массивы - это как контейнеры, в которых вы можете хранить много значений одного типа данных. Для лучшего понимания, представьте массив как ящик с разными ячейками, каждая из которых может содержать одно значение. В VBA массивы полезны, когда вам нужно хранить множество данных и обращаться к ним удобным способом.
Объявление массивов в VBA:
Чтобы создать массив в VBA, сначала нужно объявить его. Объявление массива включает в себя указание типа данных элементов массива и указание количества элементов, которые вы хотите в нем хранить.
Пример объявления массива, который будет хранить пять оценок:
Dim оценки(1 To 5) As Integer
В этом примере оценки - это имя массива, (1 To 5) указывает диапазон индексов массива, и As Integer говорит о том, что массив будет содержать целочисленные значения.
Пример с пятью именами и оценками:
Представьте, что у вас есть пять имен и пять оценок от 1 до 5. Мы можем использовать два массива, один для имен и один для оценок.
Dim имена(1 To 5) As String
Dim оценки(1 To 5) As Integer
' Заполняем массив имен
имена(1) = "Анна"
имена(2) = "Борис"
имена(3) = "Виктория"
имена(4) = "Дмитрий"
имена(5) = "Елена"
' Заполняем массив оценок
оценки(1) = 4
оценки(2) = 3
оценки(3) = 5
оценки(4) = 2
оценки(5) = 4
Теперь, используя индексы (те, что в скобках), вы можете получить доступ к конкретным именам и оценкам:
MsgBox "Имя: " & имена(3) & ", Оценка: " & оценки(3)
Этот код выведет сообщение: "Имя: Виктория, Оценка: 5". Попробуйте.
Но если данные расположены на листе Excel в координатах ("A2:A6") - имена и ("B2:B6") – оценки (смотри скриншот ниже), а также, например, необходимо через MsgBox вывести поочередно эти данные, то код может выглядеть следующим образом:
Option Explicit
Sub test1()
Dim именаRange As Range
Dim оценкиRange As Range
Dim i As Integer
' Указываем диапазоны для имен и оценок
Set именаRange = ThisWorkbook.Sheets("Лист1").Range("A2:A6")
Set оценкиRange = ThisWorkbook.Sheets("Лист1").Range("B2:B6")
For i = 1 To именаRange.Rows.Count
MsgBox "Имя: " & именаRange.Cells(i, 1).Value & ", Оценка: " & оценкиRange.Cells(i, 1).Value
Next i
End Sub
В этом коде:
1. Мы определяем диапазоны именаRange и оценкиRange, используя метод Range на листе "Лист1" (вы можете заменить "Лист1" на имя вашего листа).
2. Затем мы используем цикл For для перебора строк в диапазоне и выводим сообщение MsgBox с именем и оценкой для каждой строки.
В связи с тем, что циклы мы ещё на разбирали - коротко о цикле For и этой строке кода:
For i = 1 To именаRange.Rows.Count
Здесь For - это ключевое слово в VBA, которое начинает цикл. В данном случае мы используем цикл для перебора значений от 1 до количества строк в диапазоне именаRange.
i - это переменная-счетчик, которая будет увеличиваться на каждой итерации цикла. На первой итерации i будет равно 1, на второй - 2 и так далее.
To - это ключевое слово, которое указывает на то, до какого значения переменная i должна достигнуть. В данном случае, мы указываем именаRange.Rows.Count, что означает, что цикл будет выполняться до тех пор, пока i не достигнет значения, равного количеству строк в диапазоне именаRange.
именаRange.Rows.Count - это свойство объекта Rows, которое возвращает (то есть подсчитывает) количество строк в диапазоне именаRange.
Таким образом, цикл будет выполняться для каждой строки в диапазоне именаRange, начиная с первой строки (где i = 1) и заканчивая последней строкой (где i примет значение равное количеству строк в диапазоне).
На каждой итерации цикла мы используем значение переменной i для получения соответствующих значений из диапазонов именаRange и оценкиRange.
Таким образом массивы в VBA предоставляют удобный способ хранения и управления большими наборами данных. Путем объявления и индексации массивов вы можете хранить и получать доступ к данным. Они особенно полезны, когда у вас есть множество схожих элементов, которые вам нужно обрабатывать одновременно.
В следующей статье рассмотрим многомерные массивы в VBA.