我有一个宏,但它似乎没有工作。我有一个有多个工作表的工作簿。我基本上想要将单元格B1,G1,M94全部复制到单独的“摘要”工作表中。如果有更多A5,B5和C5等复制单元格转到A4 B4和C4。
我的编码如下。我试图制作它,所以它只用于一张纸,但需要大约10张,所有这些都有不同的名称。
Sub SummurizeSheets()
Dim ws As Worksheet
Application.ScreenUpdating = False
Sheets("Summary").Activate
For Each ws In Worksheets
If ws.Name <> "17B CUNNINGHAM" Then
ws.Range("B1, G1, M94").Copy
Worksheets("Summary").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) _
.PasteSpecial (xlPasteValues)
End If
Next ws
End Sub
答案 0 :(得分:1)
您将遇到的问题是您无法按照您尝试的方式复制/粘贴范围(多个部分)。这应该有效:
Sub SummurizeSheets()
Dim ws As Worksheet, wsSummary As Worksheet
Dim c As Range
Application.ScreenUpdating = False
Set wsSummary = Sheets("Summary")
' Set destination cell
Set c = wsSummary.Range("A4")
For Each ws In Worksheets
If ws.Name <> "17B CUNNINGHAM" And ws.Name <> "Summary" Then
ws.Range("B1").Copy
c.PasteSpecial (xlPasteValues)
ws.Range("G1").Copy
c.Offset(0, 1).PasteSpecial (xlPasteValues)
ws.Range("M94").Copy
c.Offset(0, 2).PasteSpecial (xlPasteValues)
' Move destination cell one row down
Set c = c.Offset(1, 0)
End If
Next ws
Application.ScreenUpdating = True
End Sub
我使用了一个目标单元格来放置粘贴,然后您可以将其粘贴到下一行,这样就可以将其用于多个工作表。同时从For Each
中排除摘要表并重置ScreenUpdating