Excel VBA:表格中的麻烦粘贴格式

时间:2018-08-17 10:19:50

标签: excel vba excel-vba excel-2010

我在不同的工作表中有几张表,希望在另一张表中进行编译,但是在粘贴格式时遇到了麻烦。 我当前的代码是:

Sub Compiler()

Dim wbRaw As Workbook
Set wbRaw = ThisWorkbook
Dim wsCompiled As Worksheet
Set wsCompiled = wbRaw.Sheets("ALL PROGRAMMES COMPILED")
Dim wsACF As Worksheet
Set wsACF = wbRaw.Sheets("ACF")
Dim wsASPIRE As Worksheet
Set wsASPIRE = wbRaw.Sheets("ASPIRE")

Application.ScreenUpdating = False

wsCompiled.Cells.ClearContents

wsACF.Cells(1, 1).CurrentRegion.Copy

With wsCompiled
    .Range("A1").PasteSpecial xlPasteFormats
    .Range("A1").PasteSpecial xlPasteValues
End With

Application.CutCopyMode = False


wsASPIRE.Cells(1, 1).CurrentRegion.Offset(1).Copy

With wsCompiled
    .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
    .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End With

Application.CutCopyMode = False

End Sub

第一个表以正确的格式正确粘贴,但是下一个表仅粘贴值,没有格式。

如果我从复制行中删除了偏移量:

wsASPIRE.Cells(1, 1).CurrentRegion.Copy

格式粘贴很好,但是其中包括第二个表中的标头,这些标头弄乱了已编译的数据。

任何人都可以解释为什么会发生这种情况,以及如何解决这个问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我还没有找出表格的格式没有粘贴的原因,但是我通过遍历每个工作表中的表格然后将其取消列出来解决了该问题。

Sub LoopTables()

Dim tbl As ListObject
Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        For Each tbl In ws.ListObjects
                 tbl.Unlist
        Next tbl
    Next ws

End Sub