Как опустить последнюю переменную в арглисте, используя VBA - PullRequest
0 голосов
/ 06 марта 2019

При вызове функции, которая имеет 3 аргумента (a, b и c соответственно), где последние два необязательны.Excel, кажется, заставляет меня всегда указывать последнюю переменную.Когда аргумент c не указывается, я получаю Ошибка компиляции / синтаксическая ошибка.
Но я не понимаю, почему?Как опустить последнюю переменную из списка аргументов?

Функция

Function passing_variables(a, Optional b = 1, Optional c = 1)
    passing_variables = a * b * c
End Function

Не работает

Sub main_procedure
    Cells(17, 2) = passing_variables(2, 4 , )
End Sub

Работает

Sub main_procedure
    Cells(17, 2) = passing_variables(2, ,4)
End Sub

Возможный обходной путь - предоставить именованные переменные, как указано Справочник по языку Microsoft

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Вы просто опускаете это. Например:

Sub Test()
    Debug.Print MyFunction(Var1:=2, Var2:=4)
    Debug.Print MyFunction(Var1:=2, Var2:=4, Inverse:=True)
End Sub

Function MyFunction(Var1 as Long, Var2 as Long, Optional Inverse as Boolean = False)
    MyFunction = Var1 * Var2
    If Inverse Then MyFunction = MyFunction * -1
End Function

В первом вызове «Обратный» опускается.

1 голос
/ 06 марта 2019

Может быть, просто опечатка

Sub main_procedure
    Cells(17, 2) = passing_variables(2, 4)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...