代码之家  ›  专栏  ›  技术社区  ›  xiaodai

如何使Excel用户定义函数(UDF)接受字符串类型和范围类型的参数?

  •  1
  • xiaodai  · 技术社区  · 7 年前

    我在试着做一个函数 do_something_to_string(one_arg) 其中一个参数可以是字符串类型或范围。

    在范围的情况下,我想将范围中的每个单元格连接成一个长字符串,但要进行处理。但我似乎无法创建一个函数,它可以接受字符串或范围作为参数。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jean-Claude Arbaut    7 年前

    使用可选参数或变量:

    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"))
    
    推荐文章