2017-07-25 104 views
0

我是新的與Excel VBA。我正在嘗試在我的工作簿中創建一個函數,該函數將執行excel最基本的功能。我有一個範圍(pqr),其中第一列是Y變量,第二列是X變量。我想在代碼中分配R1和R2作爲變量。我試圖讓其他線程的代碼,但下面這是我寫的代碼...設置範圍從另一個範圍名稱

Function LinestTest(pqr As Range) 
Dim vCoeff As Variant 
Dim r1 As Range 
Dim r2 As Range 
Set r1 = Range(pqr).Offset(, 1) 
Set r2 = Range(pqr).Offset(, 0) 
vCoeff = WorksheetFunction.LinEst(r1, Application.Power(r2, Array(1, 2, 3))) 
LinestTest = vCoeff 

如果我通過R1和R2分開,代碼工作。

回答

1

由於pqr定義爲Range,因此您需要直接在其上應用Offset屬性。

替換:

Set r1 = Range(pqr).Offset(, 1) 
Set r2 = Range(pqr).Offset(, 0) 

有:

Set r1 = pqr.Offset(, 1) 
Set r2 = pqr.Offset(, 0) 

B.T.W

Set r2 = pqr.Offset(, 0)相當於Set r2 = pqr

+0

感謝Shai的回覆..我通過調整大小... – kaleassv

0

這個工作了..

Function LinestTest(pqr As Range) 
    Dim vCoeff As Variant 
    Dim r1 As Range 
    Dim r2 As Range 
    'Set r1 = pqr.Offset(, 1) 
    'Set r2 = pqr.Offset(, 2) 
    Set r2 = pqr.Offset(0, 0).Resize(pqr.Rows.Count, pqr.Columns.Count - 1) 
    Set r1 = pqr.Offset(0, 1).Resize(pqr.Rows.Count, pqr.Columns.Count - 1) 

    vCoeff = WorksheetFunction.LinEst(r1, Application.Power(r2, Array(1, 2, 3))) 
    LinestTest = vCoeff 
End Function