首页 > 解决方案 > 如何使用带有重复宏的循环?

问题描述

我有大约 3 个又长又重复​​的宏。我似乎无法弄清楚用于使这更容易的循环语法。有任何想法吗?

宏 1

Range("A6:L6").Copy
Range("D3:O3").PasteSpecial Paste:=xlPasteValues

Range("A10:L10").Copy
Range("D4:O4").PasteSpecial Paste:=xlPasteValues

Range("A14:L14").Copy
Range("D5:O5").PasteSpecial Paste:=xlPasteValues

Range("A18:L18").Copy
Range("D6:O6").PasteSpecial Paste:=xlPasteValues

宏 2

Range("A7").Copy
Range("A4").PasteSpecial Paste:=xlPasteValues

Range("A11").Copy
Range("A5").PasteSpecial Paste:=xlPasteValues

Range("A15").Copy
Range("A6").PasteSpecial Paste:=xlPasteValues

Range("A19").Copy
Range("A7").PasteSpecial Paste:=xlPasteValues

宏 3

 Range("B4").Copy
Range("B3").PasteSpecial Paste:=xlPasteValues

 Range("B8").Copy
Range("B4").PasteSpecial Paste:=xlPasteValues

 Range("B12").Copy
Range("B5").PasteSpecial Paste:=xlPasteValues

标签: excelvba

解决方案


你可以这样做:

Dim rngCopy As Range, rngPaste As Range, n as long

With ActiveSheet
    Set rngCopy = .Range("A6:L6")
    Set rngPaste = .Range("D3") 
End With

For n = 1 to 4
    rngPaste.Resize(rngCopy.Rows.Count, rngCopy.Columns.Count).Value = rngCopy.Value
    
    Set rngCopy = rngCopy.Offset(4, 0)
    Set rngPaste = rngPaste.Offset(1, 0)

Next n

请注意,如果您只需要复制值,您可以直接分配它们而无需复制/粘贴步骤。


推荐阅读