当在特定的工作表上定义范围时,Excel抛出错误1004
我有两个sheet:
-Sheet A
-Sheet B
Sheet_A范围:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng as Range
Set Rng = Sheets("Sheet_B").Range("A1")
Set Rng = Range(Rng, Rng.offset(0,1))
End Sub
也许我保护了我的Sheet或者类似的东西,因为我得到:
1004"应用程序定义或对象定义的错误";
令人惊讶的是,这不会抛出错误,但像Rng.Select
或其他函数也不能工作:
Set Rng = Range(Rng.Address, Rng.offset(0,1).Address)
顺便说一下:
从Sheet_B到Sheet_A做同样的工作。
正如@BigBen在他的评论中已经暗示的那样,由于您试图在另一个工作表的范围之间获取一个工作表上的范围,因此会引发错误。Excel不能这样做。
由于该代码位于表单A后面的代码中,因此下面的代码与您的代码等效。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng as Range
Set Rng = ActiveWorkbook.Sheets("Sheet_B").Range("A1")
Set Rng = Me.Range(Rng, Rng.offset(0,1))
End Sub
这里Me
指表a。
为了获得可能期望的结果,您可以显式地使用引用表B的东西来限定对Range
的调用,例如ActiveWorkbook.Sheets("Sheet_B")
,Rng.Parent
或之前保存的一些引用,或者您可以以不同的方式调整范围。后者的一个例子已经在评论中提到了,使用Resize
。