Clever-Excel-Forum

Normale Version: Zellen kopieren, pasten, weiter unten wiederholen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum,

mein Problem ist für Excel-Makro-Cracks wahrscheinlich einfach zu lösen, aber alleine bekomme ich das nicht hin.

Problem:
Ich habe eine riesige Exceltabelle, in der bestimmte Zellen kopiert und dann in eine andere  _
gepastet werden sollen. Ich habe das Makro einfach mit der "Aufzeichnen"-Funktion aufgezeichnet. _
 Das sieht dann für 1 Durchlauf so aus:




Sub Makro2()
'
' Makro2 Makro
'

'
    Range("A3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B2").Select
    ActiveSheet.Paste
    Range("F4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("G2").Select
    ActiveSheet.Paste
    Range("F6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("H2").Select
    ActiveSheet.Paste
    Range("I4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("J2").Select
    ActiveSheet.Paste
End Sub
Beim 2. Durchgang soll jetzt nicht Zelle "A3" sondern "A13" kopiert werden und nicht in Zelle "B2" sondern in Zelle "B7" gepastet werden (und für die anderen Zellen dann nicht "F2" sondern "F9", nicht in "G2 sondern "G7" usw. usw...)

Das ganze soll dann bis ans Ende der Tabelle so durchgezogen werden (3. Durchgang, 4. Durchgang........).

Habt ihr eine Idee, wie ich das machen kann?

Beste Grüße,
J
Hallo,

schmeiße Deinen Makrorecorder an und zeichne auf, was das Makro in jedem Durchlauf tun soll.
Mit anderen Worten: Jeder Deiner gewünschten Durchläufe wird in einem eigenen Makro abgebildet.

Nun brauchst Du noch ein weiteres Makro, sozusagen ein Main_Makro, in dem die erstellten Makros
nacheinander zur Ausführung aufgerufen  werden. Dazu muß von Dir entschieden werden, wie dieses
Main_Makro gestartet werden soll.

Was ich oben geschrieben habe, ist meiner Meinung nach die einfachste Art, mit VBA Dein Problem zu
lösen. Mit diesen von Dir erstellten Makros kommst Du wieder hier her und wir optimieren diese dann.
Hallo J,

ich kann bei deinem System keine Logik erkennen, nach der man aufbauen könnte. Auch ist deine Beschreibung abweichend von den Gegebenheiten im Makro:

Zitat:und für die anderen Zellen dann nicht "F2" sondern "F9"
F2 ist im Makro nicht vorhanden, sondern F4.

Also schreib bitte nicht "usw. usw.", denn das ist nicht nachvollziehbar. Schreibe eine klare Logik auf, dann ist dein Problem binnen 2 Minuten lösbar.
Hallöchen,

Hier mal ein Ansatz. Du definierst die Quellzellen oder -Bereiche in einem Array, für die Ziele reicht jeweils die obere linke Zelle. Dann lässt Du alles in einer Schleife durchlaufen.

Code:
Option Explicit

Sub test()
'Variablendeklarationen
Dim arrSource, arrTarget
Dim iCnt%
'Arrays mit Quellzellen definieren
arrSource = Array("A1", "F2", "G3")
'Arrays mit Zielzellen definieren
arrTarget = Array("Z5", "Y55", "X33")
'Schleife ueber alle definierten Zellen
For iCnt = 0 To 2
  'Kopieren
  Range(arrSource(iCnt)).Copy Range(arrTarget(iCnt))
'Ende Schleife ueber alle definierten Zellen
Next
End Sub

Ohne Array würde es auch gehen, wenn Deine "Sprünge" mit einer Formel darstellbar sind - siehe Bernies Hinweis auf die "klare Logik".
Mit dem momentanen Stand wird's da wohl Probleme geben. Von A3 bis A13 sind 10, von B2 bis B7 5, von F2 bis F9 sind's 7, …


Dann mal noch ein allgemeiner Hinweis zum Code optimieren:

aus

Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Range("B2").Select
ActiveSheet.Paste

wird

Range("A3").Copy Range("B2")

Das

Application.CutCopyMode = False

schreibst Du als krönenden Abschluss Smile nachdem Du alles kopiert hast.