对于循环复制和粘贴Excel VBA

时间:2017-07-12 12:11:59

标签: excel vba

Function Iterate()
Dim i As Integer
For i = 1 To 10
Worksheets("Calculator").Calculate
Worksheets("Calculator").Range("AC6:AC16").Copy  Destination:=Sheets("Iterations").Range("A1:A10")
Worksheets("Calculator").Range("AT10:AT11").Copy Destination:=Sheets("Iterationas").Range("A11:A12")
                         Worksheets("Iterations").Paste

Next

End Function

我的目标,就是在我需要的时候多次运行这个循环,并且在每个循环之后,我希望excel获取范围(" cell")并将它们复制到"迭代"工作表。

每次循环都会刷新计算器上的数据,因此会出现新的计算结果。一旦新计算出现,我想将它粘贴在另一个旁边(我不知道该怎么做)。

现在,这给了我一个运行时错误下标超出范围

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我尝试了以下内容:

Option Explicit

Public Sub Iterate()

    Dim i As Long

    For i = 1 To 10
        Worksheets(1).Calculate
        Worksheets(1).Range("AC6:AC16").Copy Destination:=Worksheets(2).Range("A1:A10")
        Worksheets(1).Range("AT10:AT11").Copy Destination:=Worksheets(2).Range("A11:A12")
    Next

End Sub

它可以工作,只需确保相关地重命名工作表(1)和(2)。通常,在期望返回值时使用Function。对于工作表中的更改,请使用Sub

通常,您在评论中想要的是复制值并将它们放在彼此列的旁边。以下是如何获得它:

Option Explicit

Public Sub Iterate()

    Dim i As Long

    For i = 1 To 10
        With Worksheets(1)

        Worksheets(2).Calculate

        Worksheets(2).Range("AC6:AC16").Copy
        .Cells(1, i).PasteSpecial Paste:=xlPasteValues

        Worksheets(2).Range("AT10:AT11").Copy
        .Cells(1, i + 10).PasteSpecial Paste:=xlPasteValues

        Application.CutCopyMode = False
        End With
    Next

End Sub