Microsoft Excel宏编码问题

时间:2014-02-18 23:09:10

标签: excel vba excel-vba

我有一个宏,但它似乎没有工作。我有一个有多个工作表的工作簿。我基本上想要将单元格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

1 个答案:

答案 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