VBA 将范围值粘贴到最后一行

VBA Paste Range Values into last row

我想做的是将 E17:BK17 中的值复制到最后一行。现在我所拥有的只是将 E17 的值复制到最后一行,而不是将其余列数据复制到最后一行。任何帮助将不胜感激,因为我真的不知道我在做什么。

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

destRng.Value = targetRng.Value

End Sub

这可能会满足您的需求

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:$BK")
 lRow = WorksheetFunction.Max(Range("E65536").End(xlUp).Row)
 ACell = Range("E17").Address(RowAbsolute:=False, ColumnAbsolute:=False)

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

 End Sub

您的 Set targetRng = Range("$E:$BK") 是 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