【问题标题】:Microsoft Excel Macro Coding IssueMicrosoft Excel 宏编码问题
【发布时间】:2015-01-30 22:24:35
【问题描述】:

我有一个宏,但它似乎不起作用。我有一个包含多个工作表的工作簿。我基本上想将单元格 B1、G1、M94 全部复制到单独的“摘要”工作表中。复制单元格到 A4 B4 和 C4 比如果有更多的 A5、B5 和 C5 等等。

我的编码如下。我已经尝试过这样做,所以它只为一张纸做,但需要它用于大约 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

【问题讨论】:

    标签: vba excel


    【解决方案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

    【讨论】:

    • 这很完美。你的冠军非常感谢你
    猜你喜欢
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多