2017-02-13 4 views
0

Ich habe ein Problem mit meinem Makro zu kopieren nur die Werte des Bereichs A6:AM46,A52:AM84 zu AN6 Position auf dem gleichen Blatt kopieren.Nicht die Werte richtig kopieren

Sub PréparerGrilles() 


    Range("A6:AM46,A52:AM84").Select 
    Selection.Copy 

    Range("AN6").Select 
    Application.CutCopyMode = False 
    ActiveSheet.Paste 

End Sub 

erhalte ich die 1004-Fehler (Fehlermehrfachauswahl) Können Sie mir helfen mit diesem?

+0

Warum verwendet Ihr Code "A6: AL46, A52: AM84", wenn Ihre Frage "A6: AM84" lautet? Sie können mehrere Auswahlmöglichkeiten nicht kopieren, wenn sie unterschiedliche Zeilen- und Spaltenbreiten aufweisen. – YowE3K

+0

Bereich ("A6: AM84") gibt mir das gleiche Problem ... –

+0

(a) Mit 'Range (" A6: AL46, A52: AM84 ")' würde Ihnen ein 'Dieser Befehl kann nicht bei Mehrfachauswahl verwendet werden ' Error. Die Verwendung von 'Range (" A6: AM84 ")' würde Ihnen einen 'Paste-Methode der Worksheet-Klasse fehlgeschlagen' geben. Das ist nicht das gleiche Problem. (b) Damit wir eine Antwort geben können, welche Bereiche versuchen Sie tatsächlich zu kopieren? – YowE3K

Antwort

1

Um WerteA6:AM46,A52:AM84-AN6:BZ46,AN52:BZ84 kopieren Sie folgendes tun:

Sub PreparerGrilles() 
    Range("AN6:BZ46").Value = Range("A6:AM46").Value 
    Range("AN52:BZ84").Value = Range("A52:AM84").Value 
End Sub 

Version mit der Range.Copy Methode:

Sub PreparerGrilles() 
    Range("A6:AM46").Copy Destination:=Range("AN6:BZ46") 
    Range("A52:AM84").Copy Destination:=Range("AN52:BZ84") 
    Range("AN6:BZ46").Value = Range("AN6:BZ46").Value 
    Range("AN52:BZ84").Value = Range("AN52:BZ84").Value 
End Sub 

Ich empfehle, dass Sie nicht langsam Ihr Code mit diesem herunter. Es führt auch zu möglicherweise falschen Werten, wenn sich Ihre Formeln auf etwas beziehen, das nicht Teil der Kopie war.


Version eine PasteSpecial xlPasteValues Methode:

Sub PreparerGrilles() 
    Range("A6:AM46").Copy 
    Range("AN6:BZ46").PasteSpecial xlPasteValues 
    Range("A52:AM84").Copy 
    Range("AN52:BZ84").PasteSpecial xlPasteValues 
End Sub 

I stark diese Methode gegen die Verwendung von empfehlen, da es aufgrund der Benutzer zu viele „nicht reproduzierbar“ Fehler führt das Kopieren Dinge über die Zwischenablage zwischen Wenn Ihr Code das Kopieren und das Einfügen ausführt, und auch, weil Ihr Copy das zappt, was der Benutzer möglicherweise manuell in die Zwischenablage eingefügt hat.

+0

Dies funktioniert, aber ich wollte die Reichweite kopieren Methode, danke –

+0

@NicoCoallier Warum möchten Sie verwenden die 'Range.Copy' Methode? Müssen die Benutzer versehentlich etwas in die Zwischenablage kopieren, um so einen zufälligen Bug-Effekt zu erzeugen? Müssen Sie den Code aus irgendeinem Grund etwas langsamer machen? – YowE3K

+0

Ich möchte einen Schalter konstruieren, wo Sie später die Formel aktivieren können ... –

1

Application.CutCopyMode = False die Zwischenablage reinigt ....

Bessere Code für das heißt:

Sub Test() 

    Dim wb As Workbook, ws As Worksheet 

    Set wb = ThisWorkbook 
    Set ws = wb.Sheets("SOMMAIRE") 'this means it will only work on this sheet, you should change the name of the sheet or ask me what do you want in order to get it working on other sheets 

    ws.Range("A6:AL46").Copy 
    ws.Range("AN6").PasteSpecial xlValues 

    ws.Range("A52:AM84").Copy 
    ws.Range("AN52").PasteSpecial xlValues 

End Sub 

Editiert: das sollte jetzt den Trick. Probieren Sie es aus und sagen Sie mir, ob es funktioniert

Edited2: Das ist, was Sie wollen, zumindest für das, was Sie bisher gefragt haben.

+0

Sie können einen 41 x 38-Bereich und einen 33 x 39-Bereich nicht gleichzeitig kopieren. (Sie können ** eine 41 x 39 mit einer 33 x 39, und wahrscheinlich eine 41 x 38 mit einer 41 x 39 kopieren, aber wenn beide Zeilen und Spalten anders sind, dann mag es Excel nicht.) – YowE3K

+0

Gibt mir immer noch die 1004 Fehler –

+1

@NicoCoallier - Sie sollten Details darüber, was Fehler Sie in Ihre Frage bekommen - es stoppt Menschen gehen die falsche Spur in dem Versuch, Ihr Problem zu lösen. (Aber das Löschen der Zwischenablage durch Setzen von 'CutCopyMode' auf 'Falsch' würde Probleme verursachen, nachdem Sie den ursprünglichen Fehler behoben haben.) – YowE3K

Verwandte Themen