VBA粘贴范围值到最后一行

时间:2017-04-20 16:34:08

标签: excel excel-vba row copy-paste vba

我要做的是将E17:BK17中的值复制到最后一行。现在,我拥有它所有的副本是E17的值到最后一行,但不是剩下的列数据到最后一行。任何帮助都会受到赞赏,因为我不知道自己在做什么。

Sub Mercy_CopyPaste_Row()
'
' CopyPaste Macro
'
'
Dim targetRng As Excel.Range
Dim destRng As Excel.Range
Set targetRng = Range("$E$17:$BK$17")
Set destRng = Excel.Range("E" & Rows.Count).End(xlUp).Offset(1, 0)

destRng.Value = targetRng.Value

End Sub

2 个答案:

答案 0 :(得分:1)

您的Set targetRng = Range("$E$17:$BK$17")是59列,而destRng = Excel.Range("E" & Rows.Count).End(xlUp).Offset(1, 0)是一列(实际上它是一个单元格)。这就是你只粘贴一个单元格的原因" E17"。

为了使您的destRngtargetRng(相同的列数)相同,您需要Resize范围为targetRng.Columns.Count

尝试以下代码:

Set destRng = Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Resize(1, targetRng.Columns.Count)
destRng.Value = targetRng.Value

答案 1 :(得分:0)

这可能会做你想要的

Sub Mercy_CopyPaste_Row()

 Dim lRow As Long
 Dim ACell As String
 Dim Col As String
 Dim targetRng As Excel.Range
 Set targetRng = Range("$E$17:$BK$17")
 lRow = WorksheetFunction.Max(Range("E65536").End(xlUp).Row)
 ACell = Range("E17").Address(RowAbsolute:=False, ColumnAbsolute:=False)

 Range("$E$17:$BK$17").AutoFill Range(ACell & ":" & "BK" & lRow)

 End Sub