2009-10-22 153 views
2

我有一個宏可以從一系列工作表中的每一個複製一個彙總行。彙總行特別使用font/font color/bg顏色進行格式化,但當粘貼到「sumamry sheet」時,只需粘貼值即可,無需格式化。vba excel如何粘貼不帶字體/顏色/ bg顏色格式的值

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

這真的很奇怪!

原因是您正在複製,插入,然後粘貼。嘗試插入,複製並粘貼:

'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 
+0

如何在複製之前插入一些內容? – TylerH 2017-02-01 20:04:02

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 

與源和A2與你的目標更換A1。

+0

我知道,這應該工作吧?但是,不,不。也許我從客戶端獲得的工作簿中存在一個奇怪的設置。我可以手動粘貼而無需格式化,而不是通過vba代碼。 其他建議? – 2009-10-22 22:36:27

+0

我唯一的解釋是表單不活動。嘗試用Tablename替換ActiveSheet。 – marg 2009-10-22 23:01:28

3

一旦我選擇的範圍內,那麼我把這個

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

工作正常,我:)