Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kopieren in nächste freie zeile

Kopieren in nächste freie zeile
14.03.2017 10:00:35
Alex
Guten morgen zusammen,
ich hätte ein kurze bitte: Wer kann mir kurz helfen die folgende Funktion so umzuschreiben das _
die Zeile in die nächste freie Zeile kopiert wird?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ZielZeile As Long
ZielZeile = Sheets("Abgeschlossen").Cells(Rows.Count, 1).End(xlUp)
Set Target = Intersect(Target, Range("G2:G1000"))
If Target Is Nothing Then Exit Sub
If Target = "Abgeschlossen" Then
Target.EntireRow.Copy Destination:=Sheets("Abgeschlossen").Cells(ZielZeile + 1, 1)
'Target.EntireRow.Delete
End If
End Sub

Vielen Dank
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren in nächste freie zeile
14.03.2017 10:05:05
Daniel
Hi
ZielZeile = Sheets("Abgeschlossen").Cells(Rows.Count, 1).End(xlUp).Row
gruß Daniel
AW: Kopieren in nächste freie zeile
14.03.2017 11:00:57
Alex
Vielen Dank,
leider kopiert der angepasste Code die Zeile nicht an die richtige Stelle (erste freie Zeile in der Liste auf der Tabelle "Abgeschlossen"? Wo liegt mein Fehler?
Vielen Dank für alle Unterstützung
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ZielZeile As Long
ZielZeile = Sheets("Abgeschlossen").Cells(Rows.Count, 1).End(xlUp).Row
Set Target = Intersect(Target, Range("G2:G1000"))
If Target Is Nothing Then Exit Sub
If Target = "Abgeschlossen" Then
Target.EntireRow.Copy Destination:=Sheets("Abgeschlossen").Cells(ZielZeile + 1, 1)
'Target.EntireRow.Delete
End If
End Sub

Anzeige
AW: Kopieren in nächste freie zeile
14.03.2017 11:07:43
Daniel
Hi
an welcher Stelle wird der Code den eingefügt?
ich würde hier auch nicht mit der Variable arbeiten sodern das Ziel direkt angeben:
...Copy Destination:=Sheets("Abgeschlossen").Cells(Rows.Count, 1).end(xlup).Offset(1, 0)
Voraussetzung ist, dass in Spalte A immer ein Wert steht, wenn die Zeile befüllt ist.
Ansonsten musst du die letzte Befüllte Zeile in einer Spalte ermitteln, die immer einen Wert hat.
Gruß Daniel
Anzeige
AW: Kopieren in nächste freie zeile
14.03.2017 11:58:05
Alex
Vielen Dank für die Super unterstützung (-:
;
Anzeige
Anzeige

Infobox / Tutorial

Zeile in die nächste freie Zeile kopieren


Schritt-für-Schritt-Anleitung

Um eine Zeile in die nächste freie Zeile einer Excel-Tabelle zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code wird in das Worksheet eingefügt, in dem die Änderung stattfinden soll.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt im Projektfenster aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ZielZeile As Long
    ZielZeile = Sheets("Abgeschlossen").Cells(Rows.Count, 1).End(xlUp).Row
    Set Target = Intersect(Target, Range("G2:G1000"))
    If Target Is Nothing Then Exit Sub
    If Target = "Abgeschlossen" Then
        Target.EntireRow.Copy Destination:=Sheets("Abgeschlossen").Cells(ZielZeile + 1, 1)
    End If
End Sub
  1. Schließe den VBA-Editor und teste die Funktion, indem du in den Zellen G2 bis G1000 den Wert "Abgeschlossen" eingibst. Die gesamte Zeile sollte nun in die nächste freie Zeile der Tabelle "Abgeschlossen" kopiert werden.

Häufige Fehler und Lösungen

  • Zeile wird nicht an die richtige Stelle kopiert: Stelle sicher, dass in Spalte A immer ein Wert steht, wenn die Zeile befüllt ist. Ansonsten musst du die letzte befüllte Zeile in einer anderen Spalte ermitteln, die immer einen Wert hat.

  • Falscher Code: Vergewissere dich, dass der Code korrekt kopiert wurde und dass die Syntax stimmt. Besonders die Verwendung von End(xlUp).Row ist wichtig, um die letzte befüllte Zeile zu ermitteln.

  • Zugriffsfehler: Stelle sicher, dass der Name des Arbeitsblatts ("Abgeschlossen") korrekt ist und existiert.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die Funktion "Inhalte einfügen" verwenden:

  1. Markiere die Zeile, die du kopieren möchtest.
  2. Klicke mit der rechten Maustaste und wähle "Kopieren".
  3. Gehe zur ersten freien Zeile in deiner Ziel-Tabelle.
  4. Klicke mit der rechten Maustaste und wähle "Inhalte einfügen".

Diese Methode ist allerdings manuell und nicht automatisiert.


Praktische Beispiele

Nehmen wir an, du hast eine Excel-Tabelle mit Aufträgen. Jedes Mal, wenn ein Auftrag abgeschlossen ist, möchtest du die entsprechende Zeile in die Tabelle "Abgeschlossen" kopieren.

Mit dem oben genannten VBA-Code wird dies automatisch erledigt, wenn du den Status in Spalte G änderst. So bleibt deine Übersicht immer aktuell und du musst nicht manuell eingreifen.


Tipps für Profis

  • Fehlerhandling einbauen: Es ist empfehlenswert, Fehlerbehandlungsroutinen in deinen Code einzufügen, um unerwartete Fehler abzufangen.

  • Optimierung der Leistung: Reduziere die Anzahl der Berechnungen, indem du Application.ScreenUpdating = False zu Beginn deines Codes hinzufügst und Application.ScreenUpdating = True am Ende. Dies kann die Ausführungsgeschwindigkeit erhöhen.

  • Makros speichern: Vergiss nicht, deine Excel-Datei im .xlsm-Format zu speichern, um die VBA-Makros zu behalten.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Zeilen zu kopieren?
Du kannst eine Schleife hinzufügen, um mehrere Zeilen basierend auf einer Bedingung zu kopieren. Verwende dazu die For Each Schleife.

2. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe die Zelle, die du änderst, und stelle sicher, dass sie im Bereich G2:G1000 liegt. Achte auch darauf, dass die VBA-Referenzen korrekt gesetzt sind und die Makros aktiviert sind.

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