2017-02-03 63 views
0

我想在工作表中做一个复制粘贴循环,然后将同一个循环应用于同一工作簿中的所有其他工作表。VBA:为每个循环嵌套for循环

但是,问题是在第一个复制粘贴循环在一个工作表上完成后,代码不会移动到下一个工作表,该循环只是在同一个工作表中重复执行。

For循环:for-each循环简单的复制粘贴

:遍历工作表

这是代码:

Sub Code() 

Dim sheet As Worksheet 
Dim nr As Integer 

For Each sheet In Worksheets 

    For nr = 14 To 309 

     Range("C" & nr).Copy 
     Range("C3").PasteSpecial xlPasteValues 

     Range("D" & nr).Copy 
     Range("C4").PasteSpecial xlPasteValues 

     ActiveSheet.Calculate 

     Range("F2").Copy 
     Range("E" & nr).PasteSpecial xlPasteValues 

     Range("I2").Copy 
     Range("F" & nr).PasteSpecial xlPasteValues 

    Next nr 

Next 

End Sub 

谢谢您的帮助!

+0

请在gro ing声之前说出您的问题,瑕疵应该在帖子尾部出现 只要。 – awiebe

回答

0

您只需要限定您的范围使他们参考工作表是问题。

Dim sh as Worksheet, nr as Long 
For Each sh In ThisWorkbook.Worksheets 
    For nr = 14 To 309 
     with sh 
      .Range("C" & nr).Copy 
      .Range("C3").PasteSpecial xlPasteValues 
      .Range("D" & nr).Copy 
      .Range("C4").PasteSpecial xlPasteValues 
      .Calculate 
      .Range("F2").Copy 
      .Range("E" & nr).PasteSpecial xlPasteValues 
      .Range("I2").Copy 
      .Range("F" & nr).PasteSpecial xlPasteValues 
     End with 
    Next nr 
Next sh 

这是很好的做法,始终资格的范围。否则,他们会去任何表格活动

0

既提高性能,而不是强调剪贴板的使用就可以避免Copy & PasteSpecial方法和开关,将Value属性分配

此外,你还可以凝结范围与正确的语法

如下:

Option Explicit 

Sub main() 
    Dim ws As Worksheet, nr As Integer 

    For Each ws In ThisWorkbook.Worksheets 
     For nr = 14 To 309 
      With ws 
       .Range("C3:C4").Value = .Range("C" & nr).Resize(2).Value 
       .Calculate 
       .Range("E" & nr).Resize(, 2).Value = Array(.Range("F2").Value, .Range("I2").Value) 
      End With 
     Next 
    Next 
End Sub