2009-10-22 12 views
2

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

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 je l'ai fait, dit le PastSpecial, xlValues, xlPasteValues ​​devrait fonctionner mais rien bandes la mise en forme, ne savent pas ce que je fais 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 je voudrais rendre plus efficace. J'utilise Excel 2007.

Répondre

4

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 en utilisant la pâte copie &. Cela signifie que pendant que votre macro est en cours d'exécution, vous ne pouvez rien faire d'autre.

Comme il est une plage fixe, je dirais 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 
+0

Comment pouvez-vous insérer quelque chose avant de l'avoir copié? – TylerH

4
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 

Remplacer A1 avec votre source et A2 avec votre cible.

+0

Je sais, ce devrait travailler hein? Mais non, ce n'est pas le cas. Il y a peut-être un paramètre étrange dans le classeur que j'ai reçu du client. Je peux coller manuellement sans formatage, mais pas via le code vba. D'autres suggestions? –

+0

La seule explication que j'ai est que la feuille n'est pas active. Essayez de remplacer ActiveSheet avec le nom de fichier. – marg

3

Une fois que je choisi la gamme alors je mets cette

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

fonctionne bien pour moi :)

Questions connexes