VBA中的双循环

时间:2012-11-07 00:35:36

标签: excel vba

我正在尝试运行此循环,其中循环中的索引同时更改。

For i = 0 To 20 Step 5
For j = 0 To 5 Step 1

Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j)

Next i
Next j

我正试图让循环来做到这一点

Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 1)
Range(ActiveCell, ActiveCell.Offset(5 + 10, 0)).Copy Destination:=Cells(8, 12 + 2)
Range(ActiveCell, ActiveCell.Offset(5 + 15, 0)).Copy Destination:=Cells(8, 12 + 3)
Range(ActiveCell, ActiveCell.Offset(5 + 20, 0)).Copy Destination:=Cells(8, 12 + 4)

我不知道的循环是这样的:

Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 0)
Range(ActiveCell, ActiveCell.Offset(5 + 10, 0)).Copy Destination:=Cells(8, 12 + 0)
...
Range(ActiveCell, ActiveCell.Offset(5 + 0, 0)).Copy Destination:=Cells(8, 12 + 1)
Range(ActiveCell, ActiveCell.Offset(5 + 5, 0)).Copy Destination:=Cells(8, 12 + 1)

我想我可以有一个循环,但是:但这并不是真的。

For i = 0 To 20 Step 5

Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j-4)

Next j

任何人都可以建议有一个循环,其中指标同时发生变化吗?谢谢!!

2 个答案:

答案 0 :(得分:2)

for j = 0 to 5
    Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy _
         Destination:=Cells(8, 12 + j)
    i = i + 5
next j

编辑:为了使我的答案更完整:嵌套for循环不“同时工作”。最内部的for循环执行每次迭代,结束,然后下一个循环可以完成其循环,依此类推。你正在做的诀窍只是一个控制两个变量的循环。您可以选择要放在外观中的任何一个(i和手动增加j或反过来)。

答案 1 :(得分:2)

如果您希望它们并行运行,您实际上不需要两个循环。计算另一个变量:

For j = 0 To 4 Step 1
  i = j * 5

  Range(ActiveCell, ActiveCell.Offset(5 + i, 0)).Copy Destination:=Cells(8, 12 + j)

Next i