2012-11-07 130 views
1

我正試圖運行循環中指數在同一時間更改的循環。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) 

迴路我有unfortuantly做到這一點:

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 

任何人都可以提出對具有環,其中indicies都在同一時間同時改變任何想法?謝謝!!

+0

我認爲這個問題是「接下來我 下一步J」我想你搞砸了,應該是「下一個J下我」? – Larry

回答

1

正如你希望它們並行運行,你實際上不需要兩個循環。從另一個計算一個變量:

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 
+0

你的循環與OP的不同。 – ApplePie

+0

@ AlexandreP.Levasseur:如果你的意思是'j'從'0'運行到'4',那麼它就是故意的。否則它不會產生所需的結果。在原始代碼中,外層循環執行五次迭代,內層循環執行六次迭代,但是從結果中可以看出它們都應該執行五次迭代,並且由於它們應該並行運行,所以它們必須運行相同數量的迭代。 – Guffa

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循環會執行每次迭代,結束,然後下一個循環可以完成其循環等等。你所做的只是一個控制兩個變量的循環。你可以選擇你想要放在你的外觀(無論是我和手動增加j或其他方式)。