Question

J'ai une macro pour copier une ligne de résumé de chacune des séries de feuilles de calcul. La ligne récapitulative est spécialement formatée avec police / police couleur / couleur bg, mais une fois collée dans la "feuille de sumamry", elle doit simplement coller des valeurs sans mise en forme.

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

Toutes les recherches que j'ai effectuées indiquent que PastSpecial, xlValues, xlPasteValues ??devraient fonctionner, mais que rien ne supprime la mise en forme, je ne sais pas ce que je fais de mal ici. Il colle les valeurs plutôt que les valeurs référencées, donc c'est bien. J'ai une macro pour réinitialiser le formatage en boucle mais j'aimerais rendre plus efficace. J'utilise Excel 2007.

Était-ce utile?

La solution

C'est vraiment étrange!

La raison en est que vous copiez, insérez puis collez. Essayez Insérer, Copier puis Coller:

'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

Pour ce que ça vaut, j'ai eu des problèmes avec copy & amp; coller. Cela signifie que tant que votre macro est en cours d'exécution, vous ne pouvez pas faire grand chose d'autre.

Puisqu'il s'agit d'une plage fixe, je suggérerais ceci:

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

Autres conseils

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

ou

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

Remplacez A1 par votre source et A2 par votre cible.

Une fois la plage sélectionnée, je mets ceci

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

Fonctionne bien pour moi:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top