【发布时间】:2020-07-14 11:39:50
【问题描述】:
我真的是 VBA 的初学者,我正在尝试复制一系列范围,并且需要一次粘贴一个(到偏移行工作)。
要做到这一点,我只考虑基于范围的复制,仅奇数范围并粘贴到“F”列中,仅复制偶数范围并粘贴到“N”列中。
目前,我有这个代码。我工作得很好,但我有 20 个奇数范围和 20 个偶数范围。我需要一个简单的方法来放这 20 次重复
Range("A3:G7").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Range("A15:G19").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=2).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Range("A27:G31").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=2).PasteSpecial xlPasteAll
Application.CutCopyMode = False
一起(这里我只展示了 3 次重复的代码)。
Dim ws As Worksheet
Application.ScreenUpdating = False
Sheets("Car").Activate
Range("F2:AA250").Delete
Sheets("Summary").Activate
Range("A3:G7").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Range("A15:G19").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=2).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Range("A27:G31").Copy
Worksheets("Car").Cells(Rows.Count, "F").End(xlUp).Offset(RowOffset:=2).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Range("F2").Activate
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
不要重复代码 20 次(这是一个不好的做法)。改用循环:
For i = 1 To 20并使用 Range.Offset property 从您的第一个范围偏移到其他范围。 -
如果
xlPasteAll,为什么是PasteSpecial而不是Paste?范围是相同的。您必须复制它并在简单的迭代中更改数字...