Excel VBA中的双循环

Excel VBA中的双循环,excel,vba,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:=Ce

我试图在循环中的索引同时发生变化的地方运行这个循环

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
有没有人能提出一些想法,让标记同时变化的循环?谢谢

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或相反)


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

因为您希望它们并行运行,所以实际上不需要两个循环。从一个变量计算另一个变量:

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

因为您希望它们并行运行,所以实际上不需要两个循环。从一个变量计算另一个变量:

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

您的循环与OP的不同。@AlexandreP.Levasseur:如果您的意思是
j
0
运行到
4
,那么它是故意的。否则就不会产生预期的结果。在原始代码中,外循环执行五次迭代,内循环执行六次迭代,但从结果中可以看出,它们都应该执行五次迭代,同样,由于它们应该并行运行,它们必须运行相同数量的迭代。您的循环与OP的不同。@AlexandreP.Levasseur:如果您的意思是
j
0
运行到
4
,那么它是故意的。否则就不会产生预期的结果。在原始代码中,外循环进行五次迭代,内循环进行六次迭代,但从结果中可以看出,它们都应该进行五次迭代,而且由于它们应该并行运行,因此它们必须运行相同的迭代次数。我认为问题是“下一个I下一个j”我认为你搞糟了,应该是“下一个j下一个I”我想问题是“下一个我下一个我”我想你把事情搞砸了,应该是“下一个我下一个我”?