循环vba excel的双倍

时间:2016-06-03 19:20:05

标签: excel excel-vba excel-formula vba

我一直在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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

假设您要将sheet1上的单元格A2:L6复制到工作表2上的A2:L6,工作表1上的A7:L11:工作表3上的A6:工作表1上的A6:L16:工作表4上的A6:L6,那么这应该做它:

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

请注意,仍然不需要&#39; <&#39;