Массивы в Excel VBA: типы и способы использования с примерами.
⚡ Умное резюме
В Excel VBA массивы хранят группу связанных значений одного типа данных под одним именем, доступ к которым осуществляется по индексу. На этой странице рассматриваются статические и динамические массивы, одномерные, двумерные и многомерные массивы, синтаксис объявления и приведён пример загрузки напитков.

Что такое массив VBA?
Массив определяется как область памяти, способная хранить более одного значения. Все значения должны иметь один и тот же тип данных. Допустим, вы хотите сохранить список ваших любимых напитков в одной переменной. Для этого вы можете использовать массив VBA.
Используя массив, вы можете ссылаться на связанные значения под одним и тем же именем. Вы можете использовать индекс или нижний индекс, чтобы отличить их друг от друга. Отдельные значения называются элементами массива Excel VBA. Они смежны от индекса 0 до самого высокого значения индекса.
В этом руководстве предполагается, что вы используете Microsoft Excel версия 2013. Знания по-прежнему применимы и к другим версиям Microsoft Эксель тоже.
Каковы преимущества массивов?
Прежде чем писать код для работы с массивами, полезно понять, почему массивы стоит использовать. Ниже перечислены некоторые преимущества, которые предоставляют функции работы с массивами в VBA.
- Сгруппируйте логически связанные данные — допустим, вы хотите сохранить список студентов. Вы можете использовать одну переменную-массив, которая имеет отдельные местоположения для категорий учащихся, например детский сад, начальная, средняя, старшая школа и т. д.
- Массивы упрощают написание поддерживаемого кода. Для одних и тех же логически связанных данных он позволяет определить одну переменную вместо определения нескольких переменных.
- Повышенная производительность — после определения массива становится быстрее извлекать, сортировать и изменять данные.
Типы массивов в VBA
VBA поддерживает два типа массивов, а именно;
- статический – Эти типы массивов имеют фиксированное заранее определенное количество элементов, которые можно хранить. Невозможно изменить размер типа данных статического массива. Это полезно, если вы хотите работать с известными объектами, такими как количество дней в неделе, пол и т. д.Для примера: Dim ArrayMonth(12) как строка
- Dynamic – Эти типы массивов не имеют фиксированного заранее определенного количества элементов, которые можно хранить. Это полезно при работе с объектами, номер которых невозможно заранее определить.Для примера: Dim ArrayMonth() как вариант
Как только вы определите, какой тип подходит для ваших данных, следующим шагом будет синтаксис объявления для каждого из них.
Синтаксис объявления массивов
Статические массивы
Синтаксис объявления СТАТИЧЕСКИЙ массивы выглядит следующим образом:
Dim arrayName (n) as datatype
ВОТ,
| Code | Экшн |
|---|---|
| Тип данных Dim arrayName (n) |
|
Динамические массивы
Синтаксис объявления DYNAMIC массивы выглядит следующим образом:
Dim arrayName() as datatype ReDim arrayName(4)
ВОТ,
| Code | Экшн |
|---|---|
| Тип данных Dim arrayName() |
|
| Имя массива ReDim (4) |
|
Размеры массива
Массив может быть одномерным, двухмерным или многомерным.
- Одно измерение: в этом измерении массив использует только один индекс. Например, количество людей каждого возраста.
- Два измерения: в этом измерении массив использует два индекса. Например, количество учеников в каждом классе. Требуется количество классов и количество учеников в каждом классе.
- Многомерный: в этом измерении массив использует более двух индексов. Например, температура в дневное время. (30, 40, 20).
Как использовать массив в Excel VBA
После того, как мы разобрались с теорией, мы можем использовать массив в реальной рабочей книге. Мы создадим простое приложение. Это приложение заполняет лист Excel данными из переменной массива. В этом примере с массивом VBA мы будем делать следующее.
- Создать новый Microsoft Книгу Excel и сохраните ее как книгу Excel с поддержкой макросов (*.xlsm).
- Добавление командной кнопки в книгу
- Установите свойства имени и заголовка командной кнопки.
- Программирование VBA, заполняющего лист Excel
Давайте выполним это упражнение шаг за шагом,
Шаг 1. Создайте новую книгу.
- Открыто Microsoft Excel
- Сохраните новую книгу как VBA Arrays.xlsm.
Шаг 2 – Добавьте командную кнопку
Примечание: В этом разделе предполагается, что вы знакомы с процессом создания интерфейса в Excel. Если вы не знакомы, прочитайте руководство Управление формой VBA Excel и управление ActiveX. Он покажет вам, как создать интерфейс.
- Добавляем командную кнопку на лист
- Установите для свойства name значение cmdLoadBeverages.
- Установите для свойства caption значение «Загрузить напитки».
Ваш графический интерфейс теперь должен выглядеть следующим образом
Шаг 3 – Сохраните файл
- Нажмите кнопку «Сохранить как»
- Выберите книгу Excel с поддержкой макросов (*.xlsm), как показано на рисунке ниже.
Шаг 4 – Напишите код
Теперь мы напишем код для нашего приложения.
- Щелкните правой кнопкой мыши кнопку «Загрузить напитки» и выберите код просмотра.
- Добавьте следующий код в событие щелчка cmdLoadBeverages.
Private Sub cmdLoadBeverages_Click() Dim Drinks(1 To 4) As String Drinks(1) = "Pepsi" Drinks(2) = "Coke" Drinks(3) = "Fanta" Drinks(4) = "Juice" Sheet1.Cells(1, 1).Value = "My Favorite Beverages" Sheet1.Cells(2, 1).Value = Drinks(1) Sheet1.Cells(3, 1).Value = Drinks(2) Sheet1.Cells(4, 1).Value = Drinks(3) Sheet1.Cells(5, 1).Value = Drinks(4) End Sub
ВОТ,
| Code | Экшн |
|---|---|
| Тусклые напитки (от 1 до 4) в виде строки |
|
| Напитки(1) = «Пепси» |
|
| Sheet1.Cells(1, 1).Value = “Мои любимые напитки” |
|
| Sheet1.Cells(2, 1).Значение = Напитки(1) |
|
Тестирование нашего приложения
После добавления кода последний шаг — запустить кнопку и убедиться, что массив заполняет лист. Выберите вкладку «Разработчик» и убедитесь, что кнопка «Режим проектирования» выключена. Индикатор этого выключения будет белым, а не цветным (зеленоватым) фоном. (См. изображение ниже)
Нажмите кнопку «Загрузить напитки».
Вы получите следующие результаты
Загрузите Excel, содержащий приведенный выше код.
Скачайте указанный выше файл Excel. Code





