2017-05-26 55 views
0

我想寫一個非常簡單的UDF,它將接受一個輸入範圍並返回另一個範圍。輸出範圍中的每個單元應等於輸入範圍細胞加1。這是我有轉換一個範圍,並從UDF返回它

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。然而,輸出單元填充了#VALUE

我已檢查其他答案herehere,但無法使其適用於我的情況。任何幫助表示讚賞。

回答

2

您不能將輸出定義爲範圍,並且在單元格 必須將輸出類型更改爲雙數組的情況下對其進行評估。 Inside函數定義一個臨時數組,重新定義其大小基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 
相關問題