2017-04-20 65 views
-1

我想要做的是将E17:BK17中的值复制到最后一行。现在我所拥有的全部副本是E17的最后一行的值,而不是最后一行的剩余列数据。任何帮助将不胜感激,因为我不知道我在做什么。VBA粘贴范围值到最后一行

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 
+0

你destRng是1列,您需要将其调整到targetRng.Columns.Count –

+0

您可以通过从谷歌获得帮助找到答案。 – Masoud

回答

1

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

为了使您的destRng是的targetRng相同的尺寸(列数相同),则需要Resize范围内targetRng.Columns.Count

尝试下面的代码:

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

非常感谢你向我解释! –

+0

@StevincentRianMoseley不客气:) –

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 
+0

几乎奏效,但它覆盖了前一列的所有内容 –