Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Zeilen kopieren und neue Zeile einfügen

VBA Zeilen kopieren und neue Zeile einfügen
10.09.2015 12:20:52
Dietz
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

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeilen kopieren und neue Zeile einfügen
10.09.2015 13:24:13
UweD
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

Anzeige
AW: VBA Zeilen kopieren und neue Zeile einfügen
10.09.2015 14:26:01
Dietz
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

Anzeige
AW: VBA Zeilen kopieren und neue Zeile einfügen
10.09.2015 14:52:23
UweD
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

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

Anzeige
AW: Warum per Schleife?
10.09.2015 15:01:12
Gerd
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

AW: Warum per Schleife?
10.09.2015 15:20:19
Dietz
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

Anzeige
AW: Warum per Schleife?
10.09.2015 17:03:04
Gerd
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

AW: Warum per Schleife?
10.09.2015 17:20:48
Dietz
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

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen kopieren und neue Zeile einfügen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne die Visual Basic for Applications (VBA) Umgebung: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den VBA-Code ein: Kopiere den folgenden Code in das Modul:

    Sub ZeilenKopierenUndEinfügen()
       Dim i As Integer
       Dim xcopy As Integer
       xcopy = 10 'Startzeile in der Zieldatei
    
       ' Schleife über die Zeilen in der Quelldatei
       For i = 3 To 20 ' Beispiel: von Zeile 3 bis 20 in der Quelldatei
           If Sheets("Tabelle1").Cells(i, 7).Value > 0 And Sheets("Tabelle1").Cells(i, 30).Value = "erfüllt" Then
               ' Füge eine neue Zeile unterhalb ein
               Sheets("Tabelle2").Rows(xcopy).Insert Shift:=xlDown
               ' Kopiere die gewünschten Zellen
               Sheets("Tabelle1").Range("D" & i & ", F" & i & ", G" & i & ", M" & i & ", O" & i & ", AE" & i).Copy
               Sheets("Tabelle2").Cells(xcopy, 1).PasteSpecial Paste:=xlPasteValues
               xcopy = xcopy + 1 'Gehe zur nächsten Zeile
           End If
       Next i
       Application.CutCopyMode = False ' Kopiermodus deaktivieren
    End Sub
  4. Passe den Code an: Stelle sicher, dass die Tabellennamen und Zellreferenzen deinen Anforderungen entsprechen.
  5. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle ZeilenKopierenUndEinfügen und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs": Stelle sicher, dass die Blattnamen korrekt sind (z.B. "Tabelle1" und "Tabelle2").
  • Fehler: "Typenübereinstimmung": Überprüfe, ob die zu kopierenden Zellen tatsächlich die erwarteten Datentypen enthalten.
  • Kein Ergebnis: Vergewissere dich, dass die Bedingungen für das Kopieren (z.B. Werte in Spalte G und AD) tatsächlich erfüllt sind.

Alternative Methoden

  1. Verwendung von Excel-Formeln: Du kannst auch Excel-Formeln verwenden, um Daten zu kopieren, ohne VBA zu nutzen. Beispielsweise könntest du die Funktion WENN zusammen mit VERWEIS verwenden, um Werte zu extrahieren.
  2. Excel Power Query: Power Query ermöglicht es, Daten aus verschiedenen Quellen zusammenzuführen und automatisch zu transformieren, ohne VBA zu verwenden.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine Zeile unterhalb einzufügen und Daten zu kopieren:

Sub BeispielZeilenEinfügen()
    Sheets("Tabelle2").Rows(2).Insert Shift:=xlDown 'Füge eine neue Zeile in Zeile 2 ein
    Sheets("Tabelle1").Rows(1).Copy Sheets("Tabelle2").Rows(2) 'Kopiere die erste Zeile von Tabelle1 nach Tabelle2
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Makros zu deaktivieren, was die Ausführung beschleunigt.

  • Füge Fehlerbehandlungsroutinen hinzu, um das Makro robuster zu gestalten:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Dokumentiere Deinen Code mit Kommentaren, damit andere (oder Du selbst in der Zukunft) den Code besser verstehen.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehr als eine Zeile zu kopieren?
Du kannst die Range-Funktion erweitern, um mehrere Zeilen von der Quelldatei zu kopieren.

2. Ist dieser Code mit allen Excel-Versionen kompatibel?
Ja, der Code sollte mit den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird. Achte jedoch darauf, dass die Funktionen in älteren Versionen möglicherweise leicht variieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige