Vba 将动态范围从一个工作表复制并粘贴到另一个工作表
我正试图从“Sheet1”的第2行开始复制A列,并从第5行开始将其粘贴到“ABC”的第C列。列A中的行数是可变的,因此无法使用固定范围 下面的代码满足我的需要,但我试图避免使用.Select和.ActivateVba 将动态范围从一个工作表复制并粘贴到另一个工作表,vba,excel,dynamic,Vba,Excel,Dynamic,我正试图从“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
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’”应用程序定义或对象定义错误
我愿意接受任何尝试的更正/评论,我只想避免使用。选择并。激活
提前感谢您的时间和帮助!编码风格可能会有很大的不同。这里有一种方法可以满足您的需求:
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