我在理解如何复制范围而不激活范围所在的工作表时遇到了一些麻烦。
此代码有效:
With Sheet6
.Range("A1", .Cells(.Cells(Rows.Count, "B").End(xlUp).Row, "P")).Copy
End With
但以下所有行都不起作用:
Sheets(6).Range("A1", Cells(Cells(Rows.Count, "B").End(xlUp).Row, "P")).Copy
Sheet6.Range("A1", Cells(Cells(Rows.Count, "B").End(xlUp).Row, "P")).Copy
Sheets(6).Range("A1", .Cells(.Cells(Rows.Count, "B").End(xlUp).Row, "P")).Copy
Sheet6.Range("A1", .Cells(.Cells(Rows.Count, "B").End(xlUp).Row, "P")).Copy
我可能在这里遗漏了一些简单的东西,但似乎有很多不必要的代码可以使用With
进行一次操作。
答案 0 :(得分:1)
从A1到P&的范围有点奇怪。 [B栏的最后一行]。您可以通过查找B列中的最后一个单元格然后将范围偏移到A列然后将其向上和向右扩展到P1来完成此操作。语法有点奇怪。
With Sheet6
.Range(.Cells(Rows.Count, "B").End(xlUp).Offset(0, -1), "P1").Copy Destination:=Sheet1.Range("A1")
End With
通过将变量(lastRow)赋值给= B列中的最后一行,并将范围从A1扩展到P& lastrow,代码变得更容易理解。
Dim lastRow As Long
With Sheet6
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("A1:P" & lastRow).Copy Destination:=Sheet1.Range("A1")
End With