Как в пользовательской функции создать произвольное количество аргументов?

Для создания произвольного количества аргументов следует использовать ключевое слово ParamArray. Обратите внимание на то, этот аргумент должен быть последним в списке аргументов, иметь тип Variant и он не может использоваться вкупе со словами ByVal, ByRef или Optional.

code: #vba
Function CellText(ParamArray Massiv())
    For Each vItem In Massiv
        CellText = CellText & CStr(vItem)
    Next
End Function

Три примера вызова этой пользовательской функции из ячеек рабочего листа:

=CellText("Текст";"A";"B";"C")
=CellText("ОШИБКА: ";НД())
=CellText("Текст";;;"M") 

Если существует вероятность, что один или несколько аргументов могут быть пропущены (см. третий пример), то в этом случае, также можно использовать функцию IsMissing()

code: #vba
Function CellText(ParamArray Massiv())
    For Each vItem In Massiv
        If Not IsMissing(vItem) Then _
        CellText = CellText & CStr(vItem)
    Next
End Function
Поделиться:

Похожие статьи: