首页 文章

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

提问于
浏览
0

我正在编写一个循环通过“源”表的宏,并且对于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

1 回答

  • 0

    问题出在您的代码的以下行:

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

    如果将光标放在A列的最后一个单元格(即 "A" & Rows.Count ,可能是 A1048576 ),然后按Ctrl-向下,则仍然是A列中的最后一个单元格 .

    如果您尝试从该单元格开始粘贴6行信息,则没有空间可以使用 - 只有一行“可用”区域可供使用 .

    您可能想要找到该列中最后一个使用过的单元格后面的行,因此您的代码应该是:

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

相关问题