TL; DR - использовать, если IsMissing (тесты) Тогда ...
NTL & WR:
Даже если ParamArray нельзя использоватьвместе с любым объявленным необязательным параметром (включая сам ParamArray) не выдается никакой ошибки, если он опущен.Можно легко утверждать, что ParamArray всегда необязателен , хотя его нельзя пометить как таковой.
From: Массивы параметров (Visual Basic) Массив параметров автоматически необязателен.Его значением по умолчанию является пустой одномерный массив типа элемента массива параметров.
ParamArray, который не был предоставлен пользователем, будет вариантным массивом, который был создан, но ни заполнен, ни положительноразмеры.
Он будет определен с LBound , равным 0 (ноль) и UBound , равным -1 (минус один).Это то же самое, что и любой другой вариантный массив, объявленный, но не имеющий размерности.
Поскольку всегда является параметром типа варианта , он также правильно сообщит о своем присутствии или отсутствии с помощью IsMissing .
Public Function testParams(ByRef ndx As Long, ParamArray tests())
Select Case ndx
Case 1
testParams = CBool(tests(LBound(tests)) Is Nothing)
Case 2
testParams = IsEmpty(tests)
Case 3
testParams = IsArray(tests)
Case 4
testParams = IsError(tests)
Case 5
testParams = CBool(tests(LBound(tests)) = vbNullString)
Case 6
testParams = CBool(UBound(tests) = -1)
Case 7
testParams = IsMissing(tests)
End Select
End Function
Проверка значения IsMissing или UBound, равного -1, определит, предоставил ли пользователь параметр paramarray.