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

时间:2017-11-13 15:57:37

标签: excel vba excel-vba range

设置范围时,活动工作表不是=参考我得到

  

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

使用以下方法:

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

但是当我使用这种方法时它为什么会起作用:

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

只是试图理解为什么最后一种方法正常工作,但第一种方法没有。

2 个答案:

答案 0 :(得分:2)

您要打破范围,只要CellsRange都应该引用同一个Parent。如果您没有引用其中任何一个,则其父级是活动表:

因此要么明确地为父母两者引用父母:

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是您的活动表。

答案 1 :(得分:0)

因为工作表和单元格不能有两个不同的引用。所以它就像

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