Функция | Sub
Разница между функция и суб в Excel VBA заключается в том, что функция может возвращать значение, а подпрограмма - нет. Функции и подпрограммы становятся очень полезными по мере увеличения размера программы.
Функция
Если вы хотите, чтобы Excel VBA выполнял задачу, возвращающую результат, вы можете использовать функцию. Поместите функцию в модуль (в редакторе Visual Basic щелкните Вставить, Модуль). Например, функция с именем Area.
Функциональная область (x как двойная, y как двойная) как двойная
Площадь = x * y
Конечная функция
Объяснение: Эта функция имеет два аргумента (типа Double) и возвращаемый тип (часть после As также имеет тип Double). Вы можете использовать имя функции (Area) в своем коде, чтобы указать, какой результат вы хотите вернуть (здесь x * y).
Теперь вы можете ссылаться на эту функцию (другими словами, вызывать функцию) из другого места в вашем коде, просто используя имя функции и задавая значение для каждого аргумента.
Поместите командную кнопку на свой рабочий лист и добавьте следующие строки кода:
Dim z как двойной
z = Площадь (3, 5) + 2
MsgBox z
Объяснение: Функция возвращает значение, поэтому вы должны «поймать» это значение в своем коде. Вы можете использовать для этого другую переменную (z). Затем вы можете добавить к этой переменной еще одно значение (если хотите). Наконец, отобразите значение с помощью MsgBox.
Результат при нажатии кнопки команды на листе:
Sub
Если вы хотите, чтобы Excel VBA выполнял некоторые действия, вы можете использовать подпрограмму. Поместите подпрограмму в модуль (в редакторе Visual Basic нажмите «Вставить», «Модуль»). Например, подписка с названием Area.
Дополнительная область (x как двойное, y как двойное)
MsgBox x * y
Конец подписки
Объяснение: У этой подпрограммы есть два аргумента (типа Double). У него нет возвращаемого типа! Вы можете ссылаться на эту подпрограмму (вызвать подпрограмму) откуда-то еще в своем коде, просто используя имя подпрограммы и задав значение для каждого аргумента.
Поместите командную кнопку на свой рабочий лист и добавьте следующую строку кода:
Площадь 3, 5
Результат при нажатии кнопки команды на листе:
Вы видите разницу между функцией и подпрограммой? Функция вернула значение 15. Мы добавили к этому результату значение 2 и отобразили окончательный результат. Когда мы вызывали подпрограмму, у нас больше не было контроля над результатом (15), потому что подпрограмма не может вернуть значение!