VBA Zeilen kopieren und neue Zeile einfügen

Bild

Betrifft: VBA Zeilen kopieren und neue Zeile einfügen
von: Dietz
Geschrieben am: 10.09.2015 12:20:52

Hallo zusammen,
ich würde gerne zwischen zwei Mappen Daten kopieren, d.h. aus einer in die andere. Die erste Zeile die kopiert wird soll in eine bestimmte Zeile kopiert werden, für alle anderen Zeilen die kopiert werden sollen, soll in der Zielmappe erst eine neue Zeile unterhalb eingefügt werden, wo rein kopiert werden soll.
Ich hoffe das war verständlich?
Das ganze wird als Schleife ablaufen. Bei jedem erhöhen der Schleife zB xcopy = xcopy + 1 soll aber eine neue Zeile eingefügt werden.
Gruß
Dietz

Bild

Betrifft: AW: VBA Zeilen kopieren und neue Zeile einfügen
von: UweD
Geschrieben am: 10.09.2015 13:24:13
Hallo
so???
Rückwärts, sonst musst du die eingefügten Zeilen immer noch mit berücksichtigen...


Sub Kopieren()
    dim i As Integer
    Sheets("Tabelle1").Rows(1).Copy Sheets("Tabelle2").Rows(4) 'fest in Zeile 4
    
    For i = 10 To 2 Step -1
        Sheets("Tabelle1").Rows(i).Copy
        Sheets("Tabelle2").Rows(i).Insert Shift:=xlDown
    Next
End Sub
 
Gruß UweD

Bild

Betrifft: AW: VBA Zeilen kopieren und neue Zeile einfügen
von: Dietz
Geschrieben am: 10.09.2015 14:26:01
Hallo Uwe,
der Kopiervorgang soll nach bestimmten Bedingungen erfolgen. Mich interessiert zuerst ob ich innerhalb einer Schleife anstatt zu sagen xcopy = xcopy + 1, sprich nach erfolgreichem kopieren der einen Zeile geh mir eine Zeile weiter nach unten, auch definieren könnte, dass er mir erst eine neue leere Zeile einfügen soll bevor der Kopiervorgang fortgesetzt wird. So verstehe ich das, bin aber auch kein VBA Experte. Ist das so überhaupt sinnvoll wie ich mir das vorstelle?
Gruß
Dietz


Bild

Betrifft: AW: VBA Zeilen kopieren und neue Zeile einfügen
von: UweD
Geschrieben am: 10.09.2015 14:52:23
Hallo
Ja, sicher kannst du Zeilen einfügen

Sub sdsdhgs()
    Dim xcopy As Integer
    xcopy = 1
    Do Until xcopy = 10
        ActiveSheet.Rows(xcopy).Insert
        
        ' hier kannst du kopieren, was du möchtest
        
        
        xcopy = xcopy + 1
    Loop
End Sub
Gruß UweD

Bild

Betrifft: AW: VBA Zeilen kopieren und neue Zeile einfügen
von: Dietz
Geschrieben am: 10.09.2015 15:21:31
Hallo Uwe,
danke. Ich werde das mal ausprobieren ob das für mich so in der Form umsetzbar ist.
Gruß
Dietz

Bild

Betrifft: AW: Warum per Schleife?
von: Gerd L
Geschrieben am: 10.09.2015 15:01:12
Hallo D.!
Das ganze wird als Schleife ablaufen.
Das ist eine der langsameren Vorgehensweise beim Kopieren. Häufig geht die Aktion "am Stück".
Wie sind deine genauen Bedingungen?
Gruß Gerd

Bild

Betrifft: AW: Warum per Schleife?
von: Dietz
Geschrieben am: 10.09.2015 15:20:19
Hallo G.!
in der Quellmappe soll geprüft werden ob ab Zeile 3 in der Spalte G der Wert größer 0 ist und ob in der Spalte AD "erfüllt" steht. Sind diese Bedingungen erfüllt sollen bestimmte Zellen aus der Quell- in die Zieldatei ab Zeile 10 kopiert werden. Die Quelldatei soll dann Zeile für Zeile abgearbeitet werden und bei Übereinstimmung in die Zeildatei kopiert werden bzw. die definierten Zellen. Ist eine Zeile rüber kopiert erfolgt dann mittels xcopy = xcopy +1 der Zeilensprung und dort werden dann weitere Werte eingetragen wenn Werte in der Quelldatei gefunden wurden. So verstehe ich das.
Es soll aber nicht nur eine Zeile nach unten gegangen werden, sondern es soll eine neue leere Zeile eingefügt werden wo dann die Werte rein sollen. Ich will damit vermeiden das ich mir andere Werte in der Zieldatei überschreibe. Die Zeilen sollen also dynamisch je nach Umfang der Werte in der Quelldatei erzeugt werden.
Gruß
Dietz

Bild

Betrifft: AW: Warum per Schleife?
von: Gerd L
Geschrieben am: 10.09.2015 17:03:04
sollen bestimmte Zellen aus der Quell- in die Zieldatei ab Zeile 10 kopiert werden
Hallo Dietz,
aus welchen Spalten sollen die Zellen kopiert werden?
Und in welche Spalten eingefügt werden?
Gruß Gerd

Bild

Betrifft: AW: Warum per Schleife?
von: Dietz
Geschrieben am: 10.09.2015 17:20:48
Hallo Gerd,
kopiert soll aus den Spalten D,F,G,M,O,AE
und eingefügt in A,C,D,F,G,H
in dieser Reihenfolge, also D nach A, M nach F usw.
Gruß
Dietz
P.S.: Ich hab eine Alternative zusammengebastelt wo ich mir ausreichend Zeilen in der Zieldatei vorab einfüge damit nichts überschrieben wird. Nur dann müsste ich die überschüssigen Zeilen wieder löschen oder wie in diesem Makro leere Zeilen ausblenden. Aber das ist nur eine Notlösung. Lieber wäre mir die Zeilen dynamisch einzufügen.

Sub AusblendenLeereZeilen()
Dim i As Long
Sheets("Ergebnisse").Activate
For i = 10 To 30
Range("A" & i).Select
If ActiveCell.Value = "" Then
 ActiveCell.EntireRow.Hidden = True
Else
End If
Next i
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Zeilen kopieren und neue Zeile einfügen"