Excel VBA – 从工作簿中的某个工作表中复制范围从一个工作表粘贴到所有工作表

我觉得这太简单了,但我有一个约100页的工作簿,我需要复制范围从一张(Sheet2范围A1:H200)到Sheet5 AF1:AM200和每页后(Sheet5通过Sheet100或更多)。 我已经尝试创build一个循环,并复制原始范围和粘贴到每个工作表,但它没有奏效。 我觉得这是我得到的最接近的

Sub CopyPasteLoop() Dim wsVar As Worksheet For Each wsVar In ThisWorkbook.Sheets With wsVar ThisWorkbook.Worksheets("Sheet2").Range("A1:H200").Value = ThisWorkbook.Worksheets("Sheet5").Range("AF1").Value End With Next wsVar End Sub 

我觉得应该更简单,但我不能使它工作。 谢谢!

差不多了。 尝试这个:

 Sub CopyPasteLoop() Dim wsVar As Worksheet Dim i as Integer For i = 5 to ThisWorkbook.Worksheets.Count ThisWorkbook.Worksheets(i).Range("AF1:AM200").Value = ThisWorkbook.Worksheets("Sheet2").Range("A1:H200").Value Next i End Sub 

或者为了获得更好的性能,使用这个

 Dim vRange as Variant vRange = ThisWorkbook.Worksheets(2).range("A1:H200") Dim i as Integer For i = 5 to ThisWorkbook.Worksheets.Count ThisWorkbook.Worksheets(i).Range("AF1:AM200").Value = vRange Next i 

希望@Scott Holtzman的答案能为你工作(提供你的工作表的索引顺序与他们的名字相同)。 这种方法也将起作用。

 Dim wb As Workbook, ws As Worksheet Dim rng As Range Set wb = ThisWorkbook Set rng = wb.Sheets("Sheet2").Range("A1:H200") For Each ws In wb.Sheets If CInt(Right(ws.Name, Len(ws.Name) - Len("Sheet"))) >= 5 Then ws.Range("AF1:AM200").Value = rng.Value End If Next ws