[英]Copy and Paste Dynamic Range from One Worksheet to Another
我试图从“Sheet1”的第2行开始复制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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.