我正在尝试编写一个循环来为单元格分配来自不同工作表但以数组形式的值。
mArray(counter, 25) = dArray(iRow, 18)
mArray(counter, 26) = dArray(iRow, 19)
mArray(counter, 27) = dArray(iRow, 20)
mArray(counter, 28) = dArray(iRow, 21)
mArray(counter, 29) = dArray(iRow, 22)
mArray(counter, 30) = dArray(iRow, 23)
mArray(counter, 31) = dArray(iRow, 24)
mArray(counter, 32) = dArray(iRow, 25)
mArray(counter, 33) = dArray(iRow, 26)
mArray(counter, 34) = dArray(iRow, 27)
mArray(counter, 35) = dArray(iRow, 28)
mArray(counter, 36) = dArray(iRow, 29)
mArray(counter, 37) = dArray(iRow, 30)
mArray(counter, 38) = dArray(iRow, 31)
mArray(counter, 39) = dArray(iRow, 32)
mArray(counter, 40) = dArray(iRow, 33)
mArray(counter, 41) = dArray(iRow, 34)
mArray(counter, 42) = dArray(iRow, 35)
Run Code Online (Sandbox Code Playgroud)
我创建的循环。
Dim a As Integer, b As Integer
For a = 25 To 42
For b = 18 To 35
mArray(counter, a) = dArray(iRow, b)
Next b
Next a
Run Code Online (Sandbox Code Playgroud)
恭喜。
您偶然发现了一种特殊的循环:嵌套循环(一个循环位于另一个循环内部)。
让我向您展示您已编程的内容:
For a = 25 To 42
For b = 18 To 35
do_something(a,b)
Next b
Next a
Run Code Online (Sandbox Code Playgroud)
当您启动它时,将执行以下内容:
do_something(25,18)
do_something(25,19) ' inner loop increases
do_something(25,20) ' inner loop increases
do_something(25,21) ' inner loop increases
do_something(25,22) ' ...
do_something(25,23)
do_something(25,24)
do_something(25,25)
do_something(25,26)
do_something(25,27)
do_something(25,28)
do_something(25,29)
do_something(25,30)
do_something(25,31)
do_something(25,32)
do_something(25,33)
do_something(25,34)
do_something(25,35) ' inner loop is finished, now let's increase the outer loop
do_something(26,18)
do_something(26,19)
do_something(26,20)
...
do_something(26,35)
do_something(26,18)
do_something(26,19)
...
do_something(26,35)
do_something(27,18)
...
(up to:)
do_something(42,35)
Run Code Online (Sandbox Code Playgroud)
如您所见,在嵌套循环的情况下,您将运行内部循环。完成此操作后,您将转到外循环中的下一项,然后再次执行整个内循环,...,如此循环,直到外循环完成并且内循环完成,好吧,x 数量次数:-)
显然,这不是您想要的:在您的情况下,a 和 b 之间有一个简单的关系:a = b + 7
所以,这就是你可以做的:
For a = 25 To 42
do_something(a,a - 7)
Next a
Run Code Online (Sandbox Code Playgroud)
或者:
For b = 18 To 35
do_something(b + 7,b)
Next b
Run Code Online (Sandbox Code Playgroud)
祝你好运