Как я возвращаю результат функции?
Например:
Public Function test() As Integer
return 1
End Function
Это дает ошибку компиляции.
Как я заставляю эту функцию возвратить целое число?
Для типов, возвращаемых без объекта, вы должны присвоить значение имени вашей функции, например:
Public Function test() As Integer
test = 1
End Function
Пример использования:
Dim i As Integer
i = test()
Если функция возвращает тип объекта, вы должны использовать ключевое слово Set
следующим образом:
Public Function testRange() As Range
Set testRange = Range("A1")
End Function
Пример использования:
Dim r As Range
Set r = testRange()
Обратите внимание, что присвоение возвращаемого значения объекту имя функции не прекращает выполнение вашей функции. Если вы хотите выйти из функции, вам нужно явно сказать Exit Function
. Например:
Function test(ByVal justReturnOne As Boolean) As Integer
If justReturnOne Then
test = 1
Exit Function
End If
'more code...
test = 2
End Function
Документация: http://msdn.microsoft.com/en-us/library/office/gg264233%28v=office.14%29.aspx
Функции VBA обрабатывают само имя функции как своего рода переменную. Поэтому вместо использования оператора « return
» вы просто скажете:
test = 1
Обратите внимание, что это не выходит за рамки функции. Любой код после этого оператора также будет выполнен. Таким образом, у вас может быть много операторов присваивания, которые присваивают разные значения test
, и какое бы значение ни было, когда вы дойдете до конца функции, будет возвращенное значение.