将dynamic范围从一个工作表复制并粘贴到另一个工作表

我试图从第2行开始在“Sheet1”上复制列A,并将其粘贴到第5行的“ABC”表中的C列中。列A中的行数是可变的,所以我不能使用固定的范围。

下面的代码做我需要的,但我试图避免使用.Select和.Activate

LastRow = Range("A" & Rows.Count).End(xlUp).Row Sheets("Sheet1").Range("A2:A" & LastRow).Copy Sheets("ABC").Activate Sheets("ABC").Range("C5:C" & LastRow).Select Selection.PasteSpecial xlPasteValues 

我尝试使用此代码设置相等的列:

  Sheets("ABC").Range("C5").End(xlDown).Value=Sheets("Sheet1").Range("A2:A" & LastRow).Value 

这运行没有错误,但它“什么都不做” – 没有数据出现在工作表“ABC”

我也试图跟随:

  Dim WS As Worksheet Dim wsABC As worksheet Set WS = Sheets("Sheet1") Set wsABC = Sheets("ABC") LastRow = Range("A" & Rows.Count).End(xlUp).Row WS.Range("A2:A" & LastRow).Copy wsABC.Range("C5").End(xlDown).Paste 

这会产生“运行时错误#438对象不支持此属性或方法”错误在此行上:

  wsABC.Range("C5").End(xlDown).Paste 

我尝试的另一种方法如下:

 Dim WS As Worksheet Set WS = Sheets("Sheet1") Set wsABC = Sheets("ABC") With WS LastRow = Range("A" & Rows.Count).End(xlUp).Row WS.Range("A2:A" & LastRow).value = wsABC.Range("C5:C & LastRow").Value End With 

这会产生“运行时错误”1004“应用程序定义的错误或对象定义的错误。

我打开纠正/评论我的任何尝试,我只是想避免使用.Select和.Activate。

提前感谢您的时间和帮助!

编码风格可以有很大的不同。 这里有一种方法来做你想要的:

 Sub tgr() Dim wb As Workbook Dim wsData As Worksheet Dim wsDest As Worksheet Set wb = ActiveWorkbook Set wsData = wb.Sheets("Sheet1") Set wsDest = wb.Sheets("ABC") With wsData.Range("A2", wsData.Cells(wsData.Rows.Count, "A").End(xlUp)) wsDest.Range("C5").Resize(.Rows.Count).Value = .Value End With End Sub 
 With Worksheets("Sheet 1") With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)) Worksheets("ABC").Range("C5").Resize(.Rows.Count).Value = .Value End With End With