我正在编写一个循环通过“源”表的宏,并且对于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 回答
问题出在您的代码的以下行:
如果将光标放在A列的最后一个单元格(即
"A" & Rows.Count
,可能是A1048576
),然后按Ctrl-向下,则仍然是A列中的最后一个单元格 .如果您尝试从该单元格开始粘贴6行信息,则没有空间可以使用 - 只有一行“可用”区域可供使用 .
您可能想要找到该列中最后一个使用过的单元格后面的行,因此您的代码应该是: