2017-04-20 66 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

幾乎奏效,但它覆蓋了前一列的所有內容 –