Найти тему
VBA Excel с нуля

VBA Excel № 67. Функции с аргументами в виде массива в VBA.

Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Давайте разберем код:

  1. Первая строка: Объявление функции с именем МАССИВ_СУММ, которая принимает аргумент List и возвращает значение типа Double (число с плавающей запятой).
  2. Вторая строка: Объявление переменной Item типа Variant для хранения элементов массива.
  3. Третья строка: Инициализация переменной МАССИВ_СУММ нулевым значением.
  4. Четвёртая строка: Начало цикла, который перебирает элементы массива List.
  5. Пятая строка: Проверка, является ли текущий элемент числом, используя функцию Excel WorksheetFunction.IsNumber. Если элемент числовой, выполняются следующие действия.
  6. Шестая строка: Прибавление текущего элемента к сумме, хранящейся в переменной МАССИВ_СУММ.
  7. Седьмая строка: Завершение цикла.
  8. Восьмая строка Конец функции
Хочу напомнить, что функция МАССИВ_СУММ может использоваться в формулах на листе Excel:

=МАССИВ_СУММ(A1:В20)

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Эта формула возвращает сумму значений в диапазоне A1:В20. Обратите внимание на то, что функция МАССИВ_СУММ аналогична функции Excel SUM, но в данном случае пример ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ОБУЧЕНИЯ и демонстрации возможностей VBA.

В следующей процедуре показано, как можно использовать функцию.

Процедура «РаботаСМассивом» создает массив из 50 элементов и заполняет каждый из них случайным числом, умноженным на 1000. Затем, при вызове функции «МАССИВ_СУММ», выводится сумма всех значений массива с помощью диалогового окна сообщения (MsgBox).

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Давайте разберем эту процедуру:

  1. Первая строка: Это объявление подпрограммы (процедуры) с именем "РаботаСМассивом". Подпрограмма выполняет некоторые операции внутри себя.
  2. Вторая строка: Здесь объявляется переменная Massiv как массив (массив чисел с плавающей запятой) с 50 элементами, индексированными от 1 до 50.
  3. Третья строка: Объявление переменной i как целого числа (Integer). Эта переменная будет использоваться как счетчик для цикла.
  4. Четвёртая строка: Это начало цикла, который выполняется 50 раз, начиная с i = 1 и заканчивая i = 50. Это будет использоваться для заполнения массива Massiv случайными значениями.
  5. Пятая строка: Внутри цикла, на каждой итерации, случайное число в диапазоне от 0 до 1 (генерируется функцией Rnd) умножается на 1000, и результат присваивается элементу массива Massiv с индексом i. Таким образом, массив будет заполнен 50 случайными числами.
  6. Шестая строка: Эта строка указывает на завершение текущей итерации цикла и переход к следующей итерации (если есть). В данном случае, цикл будет выполняться 50 раз, каждый раз увеличивая значение i на 1.
  7. Седьмая строка: Эта строка вызывает функцию МАССИВ_СУММ, передавая ей массив Massiv в качестве аргумента. Функция МАССИВ_СУММ рассчитывает сумму всех элементов в массиве и возвращает ее значение. Затем это значение выводится в диалоговом окне сообщения (MsgBox), которое будет показано пользователю.
  8. Восьмая строка: Конец процедуры