Excel VBA - 复制范围从一个 sheet 粘贴到工作簿中某些 sheet 之后的所有 sheets

Excel VBA - Copy range from one sheet paste to all sheets after certain sheet in workbook

我觉得这太简单了,不能坚持下去,但我有一个大约有 100 sheet 的工作簿,我需要从一个 sheet 复制一个范围(Sheet2 Range a1:H200) 到 Sheet5 AF1:AM200 和之后的每个 sheet(Sheet5 到 Sheet100 或更多)。我已经尝试创建一个循环并复制原始范围并粘贴到每个 sheet,但它没有用。我觉得这是我最接近的一次

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