2016-12-15 3 views
0

Ich möchte kopieren und Einfügen von Werten aus einem Blatt in ein anderes Blatt über die Schaltfläche zu einem Makro zugewiesen. Und jedes Mal, wenn ich auf die Schaltfläche klicke, sollten die eingefügten Werte einige Zeilen überspringen, damit die vorherigen Werte nicht eingefügt werden. Unten ist mein Code so weit, das Problem ist, dass die Schleife nie aufhört. Es gibt wahrscheinlich einen besseren Weg? vielleicht ist eine Schleife nicht der richtige Weg?Kopieren Sie einen Bereich von Zellwerten in ein anderes Blatt mit VBA und verwenden Sie Offset

Bitte schreiben Sie die Antwort in Code, wenn Sie wissen, oder geben Sie mir ein paar Tipps. Ich würde das wirklich zu schätzen wissen.

Sub Savestrategy() 

Dim Bookmark As Integer 
Dim positioner As Integer 

For Each cell In Range("A2:L20") 

    Worksheets("Dashboard").Range("Bookmark").Copy 

    Worksheets("Bookmarks").Range("A2").Offset(positioner, 0).PasteSpecial Paste:=xlPasteFormats 
    Worksheets("Bookmarks").Range("A2").Offset(positioner, 0).PasteSpecial Paste:=xlPasteValues 

    positioner = positioner + 20 

    Application.CutCopyMode = False 

Next cell 

End Sub 
+0

Ich habe gerade Ihren Code für 'A2: B20' und es funktionierte gut (die Schleife endete). ist "Bookmark" ein benannter Bereich in Ihrem Blatt? Ihr Code wird den gleichen Wert (in 'Range (" Bookmark ")') jede 20. Zeile von A2 in das Lesezeichen-Blatt einfügen. Willst du das nicht? – nightcrawler23

+0

Hey, danke für die schnelle Antwort. Nein, ich möchte es die Werte einmal nicht wie 80 mal einfügen. Und dann, wenn ich das nächste Mal die Taste drücke, möchte ich, dass die Werte wieder eingefügt werden, aber 20 Zeilen die vorherige Paste. Verstehst du, was ich meine? –

+0

Ich glaube, Sie können eine IsEmpty und if-Anweisung verwenden? aber nicht sicher, wie es geht. Vielleicht weißt du? –

Antwort

0

Warum schleifen Sie? Sie verwenden den Bereich nicht einmal zum Schleifen.

Nicht getestet, aber Sie können sehen, wohin ich damit gehe. Wenn ich den Bereich von "Lesezeichen" kannte. Ich könnte dir weiter helfen.

Worksheets("Bookmarks").Range("A2:L20").Offset(20, 0).value = Worksheets("Dashboard").Range(Bookmark).value 
+0

Sie tun nicht aber Zitate um Bereiche. Es wird nur angenommen, dass es sich um einen Namen handelt, nicht um einen Bereich. – Ricky

+0

Ich habe jetzt die Lösung gefunden, ich sollte nicht einmal wie gesagt vorgehen. Da ich nur einmal Werte aus demselben Bereich kopieren und einfügen möchte, aber das nächste Mal, wenn ich die Werte einfüge, möchte ich, dass sie 20 Zeilen nach unten gehen. –

Verwandte Themen