Функции в VBA могут принимать аргументы различных типов, включая массивы. В данной статье представлена функция, которая принимает аргумент в виде массива и возвращает сумму его элементов.
Давайте разберем код:
- Первая строка: Объявление функции с именем МАССИВ_СУММ, которая принимает аргумент List и возвращает значение типа Double (число с плавающей запятой).
- Вторая строка: Объявление переменной Item типа Variant для хранения элементов массива.
- Третья строка: Инициализация переменной МАССИВ_СУММ нулевым значением.
- Четвёртая строка: Начало цикла, который перебирает элементы массива List.
- Пятая строка: Проверка, является ли текущий элемент числом, используя функцию Excel WorksheetFunction.IsNumber. Если элемент числовой, выполняются следующие действия.
- Шестая строка: Прибавление текущего элемента к сумме, хранящейся в переменной МАССИВ_СУММ.
- Седьмая строка: Завершение цикла.
- Восьмая строка Конец функции
Хочу напомнить, что функция МАССИВ_СУММ может использоваться в формулах на листе Excel:
=МАССИВ_СУММ(A1:В20)
Эта формула возвращает сумму значений в диапазоне A1:В20. Обратите внимание на то, что функция МАССИВ_СУММ аналогична функции Excel SUM, но в данном случае пример ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ОБУЧЕНИЯ и демонстрации возможностей VBA.
В следующей процедуре показано, как можно использовать функцию.
Процедура «РаботаСМассивом» создает массив из 50 элементов и заполняет каждый из них случайным числом, умноженным на 1000. Затем, при вызове функции «МАССИВ_СУММ», выводится сумма всех значений массива с помощью диалогового окна сообщения (MsgBox).
Давайте разберем эту процедуру:
- Первая строка: Это объявление подпрограммы (процедуры) с именем "РаботаСМассивом". Подпрограмма выполняет некоторые операции внутри себя.
- Вторая строка: Здесь объявляется переменная Massiv как массив (массив чисел с плавающей запятой) с 50 элементами, индексированными от 1 до 50.
- Третья строка: Объявление переменной i как целого числа (Integer). Эта переменная будет использоваться как счетчик для цикла.
- Четвёртая строка: Это начало цикла, который выполняется 50 раз, начиная с i = 1 и заканчивая i = 50. Это будет использоваться для заполнения массива Massiv случайными значениями.
- Пятая строка: Внутри цикла, на каждой итерации, случайное число в диапазоне от 0 до 1 (генерируется функцией Rnd) умножается на 1000, и результат присваивается элементу массива Massiv с индексом i. Таким образом, массив будет заполнен 50 случайными числами.
- Шестая строка: Эта строка указывает на завершение текущей итерации цикла и переход к следующей итерации (если есть). В данном случае, цикл будет выполняться 50 раз, каждый раз увеличивая значение i на 1.
- Седьмая строка: Эта строка вызывает функцию МАССИВ_СУММ, передавая ей массив Massiv в качестве аргумента. Функция МАССИВ_СУММ рассчитывает сумму всех элементов в массиве и возвращает ее значение. Затем это значение выводится в диалоговом окне сообщения (MsgBox), которое будет показано пользователю.
- Восьмая строка: Конец процедуры