Дополнительно
Как вернуть результат из функции VBA
Как вернуть результат из функции?
Например:
Public Function test() As Integer
return 1
End Function
Это дает ошибку компиляции.
Как сделать так, чтобы эта функция возвращала целое число?
254
4
Для типов возврата, не являющихся объектами, вы должны присвоить значение имени вашей функции, как показано ниже:
Пример использования:
Если функция возвращает тип Object, то необходимо использовать ключевое слово
Set
следующим образом:Пример использования:
Обратите внимание, что присвоение возвращаемого значения имени функции не завершает выполнение вашей функции. Если вы хотите выйти из функции, то вам нужно явно сказать
Exit Function
. Например:Документация: http://msdn.microsoft.com/en-us/library/office/gg264233%28v=office.14%29.aspx
Функции VBA рассматривают само имя функции как своего рода переменную. Поэтому вместо использования оператора "
return
" вы можете просто сказать:Заметьте, однако, что это не приводит к выходу из функции. Любой код после этого оператора также будет выполнен. Таким образом, у вас может быть много операторов присваивания, которые присваивают различные значения
test
, и какое бы значение ни было, когда вы дойдете до конца функции, оно будет возвращенным значением.Просто установка возвращаемого значения в имя функции все еще не является точно тем же самым, что и оператор
return
в Java (или других языках), потому что в javareturn
завершает функцию, как это сделано здесь:В VB точный эквивалент занимает две строки, если вы не устанавливаете возвращаемое значение в конце вашей функции. Таким образом, в VB точное следствие будет выглядеть следующим образом:
Поскольку это так, приятно также знать, что вы можете использовать возвращаемую переменную как любую другую переменную в методе. Например:
Ниже код сохраняет возвращаемое значение в код переменную
и затем
с помощью MsgBox может использоваться для отображения значения: