我似乎得到了一个错误,我不明白为什么,我知道我可以使用Range和字母,但我想学习如何以这种格式进行。
ThisWorkbook.Sheets("t").Range(Cells(1, 1), Cells(2, 2)).Value = ThisWorkbook.Sheets("1").Range(Cells(1, 1), Cells(2, 2)).Value
答案 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
调用中限定引用。