Передача необязательных аргументов по значению в VBA

В VBA, если я хочу передать необязательный аргумент ByVal (см. в основном Var2, другие переменные существуют только для того, чтобы убедиться, что он работает в сложном наборе параметров, но также должен работать):

Sub Test(Var1 As String, Optional ByVal Var2 As String, Optional Var3 As String)

    'Var1 should be passed ByRef (NOT optional) (ByRef through "default behaviour")
    'Var2 should be passed ByVal (optional) (ByVal through specific notation)
    'Var3 should be passed ByRef (optional) (ByRef through "default behaviour")

    End Sub

Я нашел только ссылка для VB работает ли это для VBA таким же образом?

Примечание. Конечно, я протестировал его, и тест работает, и другие также используют его, я просто хочу убедиться, что я не сталкивайтесь с проблемами с другими экземплярами.


person Albin    schedule 23.10.2020    source источник
comment
Какую проблему вы предвидите? Указание ByVal является хорошей практикой. Optional здесь отвлекающий маневр.   -  person BigBen    schedule 23.10.2020
comment
Также хорошей идеей может быть явное указание неявного ByRef.   -  person BigBen    schedule 23.10.2020
comment
Я не нашел официальную ссылку VBA для необязательных аргументов, передаваемых по значению, поэтому я предполагаю, что запись Optional ByVal VARNAME верна, просто хочу провести вторую проверку.   -  person Albin    schedule 23.10.2020
comment
@Albin Ваш синтаксис правильный.   -  person Brian M Stafford    schedule 23.10.2020
comment
Установите надстройку Rubberduck для VBA. Посмотрите на инспекции кода   -  person freeflow    schedule 23.10.2020


Ответы (1)


Не знаю, каким может быть сложный набор параметров, но он будет работать, как официально задокументировано:

Синтаксис оператора функции

person Gustav    schedule 23.10.2020