Vba 转换范围并从UDF返回它

Vba 转换范围并从UDF返回它,vba,excel,udf,Vba,Excel,Udf,我正在尝试编写一个非常简单的UDF,它将接受一个输入范围并返回另一个范围。输出范围的每个单元格应等于输入范围单元格加1。这是我的 Public Function Addone(rng As Range) As Range Dim i As Integer, N As Integer N = rng.Count For i = 1 To N Addone.cells(1,i) = rng.cells(1,i) + 1 Next i End Fu

我正在尝试编写一个非常简单的UDF,它将接受一个输入范围并返回另一个范围。输出范围的每个单元格应等于输入范围单元格加1。这是我的

Public Function Addone(rng As Range) As Range

    Dim i As Integer, N As Integer
    N = rng.Count

    For i = 1 To N
        Addone.cells(1,i) = rng.cells(1,i) + 1
    Next i

End Function
假设范围“A1:C1”包含数字1、2、3。然后我转到工作表,选择一个单元格区域(输出区域,“A2:C2”),然后输入
Addone(A1:C1)
,然后按Ctrl+Shift+Enter。但是,输出单元格中填充了
#值


我已经检查了其他答案,但无法使其适用于我的案例。非常感谢您的帮助。

您不能将输出定义为范围并在单元格中对其求值 必须将输出类型更改为双数组。在函数内部定义一个临时数组,重新定义其大小基数N,然后分配给返回的数组。下面应该做些什么。如果这能解决问题,请告诉我

Public Function Addone2(rng As Range) As Double()

    Dim temp() As Double
    Dim i As Integer, N As Integer
    N = rng.Count
    ReDim temp(1 To N) As Double
    For i = 1 To N
        temp(i) = rng.Cells(1, i) + 1
    Next i
    Addone2 = temp
End Function

不能将输出定义为范围并在单元格中对其求值 必须将输出类型更改为双数组。在函数内部定义一个临时数组,重新定义其大小基数N,然后分配给返回的数组。下面应该做些什么。如果这能解决问题,请告诉我

Public Function Addone2(rng As Range) As Double()

    Dim temp() As Double
    Dim i As Integer, N As Integer
    N = rng.Count
    ReDim temp(1 To N) As Double
    For i = 1 To N
        temp(i) = rng.Cells(1, i) + 1
    Next i
    Addone2 = temp
End Function