复印偏移范围

时间:2019-02-19 10:35:27

标签: excel vba

我有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

2 个答案:

答案 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 propertyRange.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,其他所有内容也会相应更改。