簡體   English   中英

對於循環復制和粘貼Excel VBA

[英]For Loop Copy and Paste 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接受Range(“ cells”)並將其復制到“ Iterations”工作表中。

計算器上的數據在每個循環中都會刷新,因此會出現新的計算。 一旦出現新的計算,我想將其粘貼到另一個(我不知道該怎么做)。

現在,這給了我一個運行時錯誤,使它的下標超出范圍

有什么建議嗎?

我嘗試了以下方法:

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

它可以正常工作,只需確保您對Worksheets(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM