双循环vba excel

我一直在为VBA的Excel编码,但一直没有能够得到它的工作….我想复制从Sheet1的单元格到另一些工作表中的单元格,每个工作表中我需要复制到不同的单元格。

Sub copy() For i=2 To 4 For k=0 To 10 Step 5 Sheets("1").Cells((2+i,1),(6+i;12)).Copy Destination:=Sheets(i).Range("A2:L6") Next k Next i End Sub 

而不是复制和粘贴,只需设置一个范围等于另一个,就像这样

 Sub copy() For i = 2 To 4 Sheets(i).Range(Sheets(i).Cells(2+i,1), Sheets(i).Cells(6+i,12)) = Worksheets("Sheet1").Range("A2:L6") Next i End Sub 

此外,我删除了内部循环,因为k没有被使用,你有一个分号,我假设你有一个逗号。 而且很难告诉你要完成的任务,因为你将会改变你在循环中将数据放在每张表上的行。 所以也许你不希望i在你的细胞参考。 在这种情况下,尝试一下

 Sub copy() For i = 2 To 4 Sheets(i).Range("A2:L6") = Worksheets("Sheet1").Range("A2:L6") Next i End Sub 

假设你想要复制Sheet1上的单元格A2:L6到A2:L6在Sheet2上,A7:L11在Sheet1上到A2:L6在Sheet3上和A12:L16在Sheet1上到A2:L6在Sheet4上,那么应该这样做:

 Worksheets("Sheet2").Range("A2:L6").Value = Worksheets("Sheet1").Range("A2:L6").Value Worksheets("Sheet3").Range("A2:L6").Value = Worksheets("Sheet1").Range("A7:L11").Value Worksheets("Sheet4").Range("A2:L6").Value = Worksheets("Sheet1").Range("A12:L16").Value 

或者如果您更喜欢使用循环来将其扩展到Sheet5及更高版本:

 For i = 2 To 4 Worksheets("Sheet" & i).Range("A2:L6").Value = Worksheets("Sheet1").Range(Cells((i - 2) * 5 + 2, 1), Cells((i - 2) * 5 + 7, 12)).Value Next i 

请注意,仍然不需要“k”。