2017-07-25 105 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