Как заставить пользовательскую функцию Excel (UDF) принимать аргументы типа String и типа range? - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь создать функцию do_something_to_string(one_arg), где one_arg может иметь строковый тип или диапазон.

В случае диапазона я хочу объединить каждую ячейку диапазона в одну длинную строку, но обработать. Но я не могу создать функцию, которая может принимать строку или диапазон в качестве аргумента.

1 Ответ

2 голосов
/ 26 июня 2019

Либо используйте необязательные аргументы, либо вариант:

Function MyFunction1(Optional Str As String, Optional Rng As Range) As String
    Dim C As Range, S As String
    If Rng Is Nothing Then
        MyFunction1 = Str
    Else
        S = ""
        For Each C In Rng
            S = S & CStr(C.Value)
        Next
        MyFunction1 = S
    End If
End Function

Function MyFunction2(V As Variant) As String
    Dim C As Range, S As String
    If VarType(V) = vbString Then
        MyFunction2 = V
    ElseIf TypeName(V) = "Range" Then
        S = ""
        For Each C In V
            S = S & CStr(C.Value)
        Next
        MyFunction2 = S
    Else
        Err.Raise 13, , "The argument must be a String or a Range."
    End If
End Function

Затем попробуйте:

Debug.Print MyFunction1("test")
Debug.Print MyFunction1(, Range("A1:B3"))
Debug.Print MyFunction2("test")
Debug.Print MyFunction2(Range("A1:B3"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...