我正在编写一个循环遍历“源”工作表的宏,并且对于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
答案 0 :(得分:0)
问题在于您的代码的以下行:
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)