为什么这给我一个错误? 范围(单元格,单元格)select

我似乎得到这个错误,我不明白为什么,我知道我可以用字母范围,但我想学习如何以这种格式。

ThisWorkbook.Sheets("t").Range(Cells(1, 1), Cells(2, 2)).Value = ThisWorkbook.Sheets("1").Range(Cells(1, 1), Cells(2, 2)).Value 

这里是我的testing代码,我添加了一些工作表对象,使它更容易阅读。 如果您使用的是工作表模块,则您也必须限定该Range ,如果您处于普通模块中,则可以将其忽略。

 sub test() dim t as worksheet dim one as worksheet set t = ThisWorkbook.Sheets("t") set one = ThisWorkbook.Sheets("1") t.Range(t.Cells(1, 1), t.Cells(2, 2)).Value = one.Range(one.Cells(1, 1), one.Cells(2, 2)).Value 'Alternatively, what Jeeped is referencing in his comment: with ThisWorkbook.Sheets("t") .range(.cells(1, 1), .cells(2, 2).value = one.Range(one.cells(1, 1), one .Cells(2,2)).value end with end sub 

@Sobigen的答案给出了一个很好的方法来限定你的引用来避免错误。

您也可以通过使用Resize完全避免Cells

 Sub UseResizeInsteadOfCells() ThisWorkbook.Sheets("t").Range("A1").Resize(2, 2).Value = _ ThisWorkbook.Sheets("1").Range("A1").Resize(2, 2).Value End Sub 

我使用了A1因为您在Worksheet上的Cells(1,1)是相同的引用。 您也可以使用.Cells(1,1).Resize(2,2)并获得相同的结果,而不用担心Range调用中的限定引用。