Как возвратить результат функции VBA

Как я возвращаю результат функции?

Например:

Public Function test() As Integer
    return 1
End Function

Это дает ошибку компиляции.

Как я заставляю эту функцию возвратить целое число?

255
задан Machavity 1 May 2019 в 12:55
поделиться

2 ответа

Для типов, возвращаемых без объекта, вы должны присвоить значение имени вашей функции, например:

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

399
ответ дан 23 November 2019 в 02:46
поделиться

Функции VBA обрабатывают само имя функции как своего рода переменную. Поэтому вместо использования оператора « return » вы просто скажете:

test = 1

Обратите внимание, что это не выходит за рамки функции. Любой код после этого оператора также будет выполнен. Таким образом, у вас может быть много операторов присваивания, которые присваивают разные значения test , и какое бы значение ни было, когда вы дойдете до конца функции, будет возвращенное значение.

84
ответ дан 23 November 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: