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

时间:2015-06-01 17:31:50

标签: excel vba

我似乎得到了一个错误,我不明白为什么,我知道我可以使用Range和字母,但我想学习如何以这种格式进行。

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

2 个答案:

答案 0 :(得分:2)

这是我的测试代码,我添加了一些工作表对象,使其更容易阅读。如果使用工作表模块,则必须限定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 ,如果您使用的是普通模块,则可以将其保留。

Id=UserLink

答案 1 :(得分:0)

@Sobigen的答案提供了一个很好的方法来限定你的引用,以避免错误。

您还可以使用Cells完全避免Resize

Sub UseResizeInsteadOfCells()

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

End Sub

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