复制粘贴循环

时间:2016-12-07 19:54:25

标签: vba excel-vba excel

我想制作J3:N3 = T2:X2,然后我要复制T2:X2的细胞公式并粘贴,跳一个并粘贴等等。代码运行正常,但不会在任何单元格中应用我的公式。知道我做错了吗?

WsScenarios.Activate
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[1]C[-10]"
Range("T2").Select
Selection.AutoFill Destination:=Range("T2:X2"), Type:=xlFillDefault
Set RgnCopy = Range("T2:X2")

i = 4
Do While i <= LastRow    
  RgnCopy.Copy
  Range(Cells(i, 20), Cells(i, 24)).PasteSpecial xlPasteFormulas
  i = i + 2        
Loop

1 个答案:

答案 0 :(得分:0)

使用Excel UI记录宏有时很有用,但更重要的是编写代码以便以更好的方式完成您想要的任务。此外,您还必须考虑将来更多地使用maintaning或开发代码,因此我建议删除所有使用UI的元素,例如激活工作表,或通过activecell,Select方法等获取用户的输入。

正如之前的评论中提到的使用范围(“T2”)。FormulaR1C1 =“= R [1] C [-10]”将解决您的问题,但如果您考虑将两个范围作为起点和终点,那么你总是可以更快更好地完成这项工作,最简单的方法是在以后的时间内对代码进行参数化:

Sub CopyIt()
    Dim rngOrigin As Range
    Dim rngDestination As Range
    Dim WS As Worksheet

    Set WS = ActiveSheet
    Set rngOrigin = WS.Range("T2:X2")
    Set rngDestination = WS.Range("J3:N3")

    rngDestination.NumberFormat = "General"
    rngOrigin.Copy
    rngDestination.PasteSpecial xlPasteFormulas

End Sub