vba excel如何粘贴没有字体/颜色/ bg颜色格式的值

时间:2009-10-22 21:40:24

标签: excel vba paste

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

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。

3 个答案:

答案 0 :(得分: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

对于它的价值,我在使用copy& amp;糊。这意味着当你的宏运行时,你不能做太多其他事情。

由于它是固定范围,我建议:

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

答案 1 :(得分: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替换为目标。

答案 2 :(得分:4)

一旦我选择了范围,我就把这个

 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone 

适合我的工作:)