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
我觉得这太简单了,不能坚持下去,但我有一个大约有 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