В Excel я написал Separate функцию vba следующим образом:
Function Separate(sp As String, ParamArray ArgList() As Variant)
    Dim paramLoop As Long
    Dim curRng As Range
    Separate = ArgList(0).Cells(1, 1).Value
    Dim flag As Boolean
    flag = False
    For paramLoop = 0 To UBound(ArgList)
        For Each curRng In ArgList(paramLoop)
            If flag Then
                Separate = Separate & sp & curRng.Value
            End If
            flag = True
        Next curRng
    Next paramLoop
End Function
Эта функция предназначена для объединения произвольного количества содержимого, разделенного строкой, указанной в качестве первого аргумента.
Например, =Separate(", ",A1:B2,A2) возвращает Alan, Bill, Carl, Dale, Bill . (Предположим, что эти имена были сохранены в ячейках A1 , A2 , B1 и B2 .)
Это становится проблемой, если константа, а не ссылка передается второму (и третьему и т.д.) Аргументу, такому как =Separate(", ","Alan",A2:B2) . Это потому, что мой код предполагает, что ArgList() As Variant является объектом Range .
Как VBA может определить, передается ли каждый аргумент со ссылкой или константой? Или как изменить код так, чтобы он выполнял одинаковые действия независимо от того, передан ли аргумент со ссылкой или константой?
