Domanda

Ho una macro per copiare una riga di riepilogo da ciascuna di una serie di fogli di lavoro. La riga di riepilogo è appositamente formattata con font / font color / bg color, ma una volta incollata nel 'foglio sommario', deve semplicemente incollare i valori senza formattazione.

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

Tutta la ricerca che ho fatto dice che PastSpecial, xlValues, xlPasteValues ??dovrebbero funzionare, ma nulla toglie la formattazione, non so cosa sto facendo di sbagliato qui. Incolla i valori anziché i valori di riferimento, quindi è buono. Ho una macro per ripristinare la formattazione in loop ma vorrei renderla più efficiente. Sto usando Excel 2007.

È stato utile?

Soluzione

È davvero strano!

Il motivo è che stai copiando, inserendo e quindi incollando. Prova Inserisci, Copia e quindi Incolla:

'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

Per quello che vale, ho avuto problemi con l'uso di copy & amp; incolla. Significa che mentre la tua macro è in esecuzione, non puoi fare molto altro.

Dato che è un intervallo fisso, suggerirei questo:

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

Altri suggerimenti

ActiveSheet.Range("A1").EntireRow.Copy
ActiveSheet.Range("A2").EntireRow.PasteSpecial xlPasteValues
Application.CutCopyMode = False

o

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

Sostituisci A1 con la tua fonte e A2 con la tua destinazione.

Dopo aver selezionato l'intervallo, lo inserisco

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

Funziona bene per me :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top