3

我有一个宏可以从一系列工作表中的每一个中复制摘要行。摘要行使用字体/字体颜色/背景颜色进行了特殊格式化,但是当粘贴到“摘要表”时,它只需要粘贴值而不进行格式化。

For LoopIndex = StartIndex To EndIndex
    ' start in a task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

我所做的所有研究都说 PastSpecial、xlValues、xlPasteValues 应该可以工作,但没有任何东西会删除格式,不知道我在这里做错了什么。它确实粘贴了值而不是引用的值,所以这很好。我有一个宏来重置循环中的格式,但我想提高效率。我正在使用 Excel 2007。

4

3 回答 3

6

这真的很奇怪!

原因是您正在复制、插入然后粘贴。尝试插入、复制然后粘贴:

'we must commence on the Summary Sheet
Sheets("Summary Sheet").Select
For LoopIndex = StartIndex To EndIndex

    ' insert the row before we start
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ' select the task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

对于它的价值,我在使用复制和粘贴时遇到了问题。这意味着当你的宏运行时,你不能做很多其他事情。

由于它是一个固定范围,我建议这样做:

For LoopIndex = StartIndex To EndIndex
    Sheets("Summary Sheet").Range("A8").EntireRow.Insert
    For i = 1 To 12
        Sheets("Summary Sheet").Cells(8, i) = Sheets(LoopIndex).Cells(156, i)
    Next
Next
于 2009-10-23T03:04:14.580 回答
4
ActiveSheet.Range("A1").EntireRow.Copy
ActiveSheet.Range("A2").EntireRow.PasteSpecial xlPasteValues
Application.CutCopyMode = False

或者

ActiveSheet.Range("A2").EntireRow.Value = ActiveSheet.Range("A1").EntireRow.Value

将 A1 替换为您的源,将 A2 替换为您的目标。

于 2009-10-22T21:56:18.313 回答
4

一旦我选择了范围然后我把这个

Selection.PasteSpecial 粘贴:=xlPasteValues,操作:=xlNone

对我来说很好:)

于 2013-07-12T07:42:58.103 回答