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")并将它们复制到"迭代"工作表。
每次循环都会刷新计算器上的数据,因此会出现新的计算结果。一旦新计算出现,我想将它粘贴在另一个旁边(我不知道该怎么做)。
现在,这给了我一个运行时错误下标超出范围
有什么建议吗?
答案 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