我有VBA宏可以复制粘贴单元格。问题是我必须像30次一样复制此宏,并逐一检查每种情况。我之间有相同数量的行,只有开始的行在变化。我想将宏修改为从第一行开始的“复制偏移量”。因此,在此特定情况下,锚点单元格为D13。
我尝试使用copySheet.Offset(17, 1).Copy
(“ D14:E30”),但这似乎不起作用?
Sub CopyPaste()
Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Set copySheet = Worksheets("Calculation")
Set pasteSheet = Worksheets("Calculation")
Range("D13").MergeArea.Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteAll
copySheet.Range("D14:E30").Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(1, 0).PasteSpecial xlPasteAll
Range("D31").MergeArea.Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(18, 0).PasteSpecial xlPasteAll
copySheet.Range("D32:E33").Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(19, 0).PasteSpecial xlPasteAll
Range("D163").MergeArea.Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(150, 0).PasteSpecial xlPasteAll
copySheet.Range("D164:E167").Copy
pasteSheet.Cells(13, Columns.Count).End(xlToLeft).Offset(151, 0).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
copySheet.Offset(1, 1).Copy
不起作用,因为.Offset()
需要像元或范围引用。
例如copySheet.Range("A10").Offset(1, 1).Copy
如果您要复制D13:E40
的偏移量,那么这是一个可能的选择:
copySheet.Range("D13:E40").Offset(17, 1).Copy
答案 1 :(得分:1)
要从Range("D13")
到Range("D14:E30")
,可以使用Range.Offset property和Range.Resize property的组合。
Dim StartRange As Range
Set StartRange = copySheet.Range("D13")
'D14:E30
StartRange.Offset(1, 0).Resize(17, 2).Copy
'D32:E33
StartRange.Offset(19, 0).Resize(2, 2).Copy
您可以使其适应其他复制语句。因此,如果您更改StartRange
,其他所有内容也会相应更改。