我尝试遍历两个工作簿中的列-从第一个工作簿中我需要复制每第4行,在第二个工作簿中我需要将复制的数据粘贴到第二行中的新列中。
每4行复制一次:
将其粘贴到第2行的新列中
这是我拥有的代码:
Dim x As Integer
Dim b As Integer
x = 6
b = 3
Do Until x < 60
Do Until b < 16
Workbooks("MailTemplate.xlsx").Activate
Cells(x, 2).Copy
Workbooks("Mail2xlsxTemplate.xlsx").Activate
Cells(2, 3).PasteSpecial
x = x + 4
Loop
b = b + 1
Loop
答案 0 :(得分:1)
首先,您的循环将永远不会执行,因为终止条件在循环开始之前已经为假。 x
小于60,因此外循环永远不会执行,而b
小于16因此,即使将执行外循环,也永远不会执行内循环。现在假设您创造了更多真实的条件,那么当我正确格式化您的代码时:
Do Until x < 60
Do Until b < 16
Workbooks("MailTemplate.xlsx").Activate
Cells(x, 2).Copy
Workbooks("Mail2xlsxTemplate.xlsx").Activate
Cells(2, 3).PasteSpecial
x = x + 4
Loop
b = b + 1
Loop
您会立即看到x
在内部循环中递增,但是内部循环永远不会终止,因为b
在该循环中从未递增。
这就是Do Until
循环的工作方式,这就是为什么您应该始终正确格式化代码的原因!
在您的情况下,您可能需要使用Do ... While
循环。该循环将至少始终执行一次,因为终止条件仅在循环体的末端进行检查。
或者您可以使用While...Wend
循环,只有在终止条件为真(包括最合适的时间)时,才会执行该循环。
答案 1 :(得分:0)
Dim x As Integer
Dim b As Integer
For x = 6 To 60
For b = 3 To 16
Workbooks("MailTemplate.xlsx").Activate
Cells(x, 2).Copy
x = x + 4
Workbooks("Mail2xlsxTemplate.xlsx").Activate
Cells(2, 3).PasteSpecial
b = b + 1
Next x
Next b