设置范围结果在应用程序定义或对象定义错误,两种方法? VBA

当设置一个范围,并且活动工作表是不是=的参考我得到一个

应用程序定义的对象定义的错误

使用下面的这个方法:

Set Rng = Worksheets("Worksheet2").Range(Cells(2,2),Cells(2,3)) 

但是为什么当我使用这个方法时它工作:

 Set Rng = Range(Worksheets("Worksheet2").Cells(2,2),Worksheets("Worksheet2").Cells(2,3)) 

只是想明白为什么最后的方法工作,但第一个不。

你打破了范围,只要CellsRange应该被引用到同一个父。 如果您不介绍任何一个,他们的父母就是activesheet:

因此,要么明确指出他们两人的父母:

 With Worksheets("worksheets2") Set Rng = .Range(.Cells(2, 2), .Cells(2, 3)) End With 

或者让它们都为空(因此它将是ActiveSheet):

 Set Rng = Range(Cells(2,2),Cells(2,3)) 

为了使这个工作Set Rng = Worksheets("Worksheet2").Range(Cells(2,2),Cells(2,3)) ,你必须确保Worksheets2是你的activesheet。

因为您不能有两个不同的工作表和单元格的引用。 所以它会是这样的

 Set Rng = Worksheets("Worksheet2").Range(Worksheets("Worksheet2").Cells(2, 2), Worksheets("Worksheet2").Cells(2, 3))