将范围复制到另一张工作表的底部



我正在编写一个宏,该宏循环遍历"源"工作表,并且对于列a中的每个值,将范围从模板工作表复制到目标工作表。复制模板范围后,我需要根据源工作表的值更改目标工作表中的一些值。现在我正在试着复印。复制失败,错误1004"无法粘贴信息,因为复制区域和粘贴区域的大小不相同。"

Sub CopyRangeFromOneSheetToAnother()
    Dim iLastRow As Long
    Dim wb As Workbook
    Dim shtSource As Worksheet
    Dim shtTemplate As Worksheet
    Dim shtDest As Worksheet
    Dim sResourceName
    Dim rngCalcTemplate As Range

    Set wb = ThisWorkbook
    Set shtSource = wb.Sheets(1)
    Set shtTemplate = wb.Sheets("res_tpl")
    Set shtDest = wb.Sheets.Add
    '--set range for copying. Hard-coded for now would be nice if it would auto shrink/expand
    Set rngCalcTemplate = shtTemplate.Range("A2:M7")
    'Find the last row (in column A) with data.
    iLastRow = shtSource.Range("A:A").Find("*", searchdirection:=xlPrevious).Row
    '--loop through source sheet and copy template range to dest for each
    For iSourceSheetRow = 2 To iLastRow
        sResourceName = shtSource.Cells(iSourceSheetRow, 1)
        rngCalcTemplate.Copy shtDest.Range("A" & Rows.Count).End(xlDown)
    Next
End Sub

问题出在以下代码行:

rngCalcTemplate.Copy shtDest.Range("A" & Rows.Count).End(xlDown)

如果您将光标放在A列的最后一个单元格上(即"A" & Rows.Count,可能是A1048576),然后按Ctrl-Down,您仍然位于A列的最后一个单元格。

如果你试图粘贴6行信息,从该单元格开始,将没有空间这样做-只有一行"可粘贴"区域可供使用。

您可能希望找到该列中最后使用的单元格后面的行,因此您的代码应该是:

rngCalcTemplate.Copy shtDest.Range("A" & shtDest.Rows.Count).End(xlUp).Offset(1, 0)

相关内容

最新更新