Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: aktuelle Zeile kopieren und darunter einfügen

VBA: aktuelle Zeile kopieren und darunter einfügen
13.07.2015 11:33:11
mikr8
hallo,
ich habe folgendes anliegen...
ich habe eine liste mit verschiedenen Kriterien, sobald ich in Spalte L ein X eintrage, möchte ich, dass eine neue Zeile darunter eingefügt wird und die Werte aus Spalten A bis I übernommen werden.
ist das möglich?
Kann mir hierbei jemand helfen?
danke!

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Nix VBA - Tabelle!
13.07.2015 11:47:21
EtoPHG
Hallo mikr8
Das lässt sich ohne VBA elegant mit einer Tabelle lösen!
Im Datenbereich Ctrl-T und fertig.
Tab (Ctrl-I) auf der letzten Tabellenzelle fügt automatisch eine neu Zeile ein!
Gruess Hansueli

AW: zum testen
13.07.2015 11:51:36
Bernd
Hi!
nicht getestet, aber das hier habe ich gefunden:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 11)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 11)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
sollte bei jedem Eintrag in L funktionieren, aber ob es so passt, kann ich auch nicht recht sagen.
mfg Bernd

Anzeige
AW: zum testen - Nachtrag
13.07.2015 11:57:36
Bernd
Hi!
für A-I so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 9)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 9)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
lg Bernd

Anzeige
AW: zum testen
13.07.2015 12:09:24
mikr8
Danke,
Mit diesem Code wird bei jeder Änderung eine Zeile unterhalb eingefügt.
Jedoch werden alle Zelleninhalte nicht nur A bis I kopiert und es ist wie gesagt bei jeder Änderung.
Wie muss ich den code abändern, sodass dies ausschließlich bei einem "x" geschieht?
danke!

Anzeige
AW: zum testen
13.07.2015 12:12:07
Bernd
Hi,
für A-I musst Du meinen 2 Code verwenden. Wie das mit einem X funktioniert, da muss ein VBA Profi ran, ich hab den Code nur mal als Ansatz reingestellt um diesen eventuell dementsprechend zu erweitern.
lg Bernd

AW: zum testen
13.07.2015 12:29:51
Bernd
Hallo nochmals,
mit der Hilfe von Hansueli geht es bei mir so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
' nur beim Ändern einer Zelle
If Target.Count > 1 Then Exit Sub
Zeile = Target.Row
'nur bei Änderungen in Spalte 12(L)
If Target.Column = 12 And Target.Cells(1, 1) = "x" Then
Application.EnableEvents = False
Range(Cells(Zeile, 1), Cells(Zeile, 9)).Copy
Range(Cells(Zeile + 1, 1), Cells(Zeile + 1, 9)).Insert xlDown
With Application
.CutCopyMode = False
.EnableEvents = True
End With
End If
End Sub
lg Bernd

Anzeige
...na dann...
13.07.2015 12:21:43
EtoPHG
Wer nicht hören will muss fühlen, mikr8 ;-)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 And Target.Count = 1 And _
IsEmpty(Target.Offset(1, -11)) And Target.Cells(1, 1) = "x" Then
Application.EnableEvents = False
Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Copy _
Cells(Target.Row, 1).Offset(1)
Application.EnableEvents = True
End If
End Sub

Gruess Hansueli

Anzeige
AW: ...na dann...
13.07.2015 13:49:23
mikr8
Danke!
die Mischung war genau das was ich gesucht habe!
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile kopieren und darunter einfügen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel mithilfe von VBA zu kopieren und direkt darunter einzufügen, kannst du den folgenden Code verwenden. Dieser Code sorgt dafür, dass, wenn du in Spalte L ein "x" eingibst, die gesamte Zeile von A bis I kopiert und unterhalb eingefügt wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt aus, in dem du den Code einfügen möchtest.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 12 And Target.Count = 1 And Target.Cells(1, 1) = "x" Then
        Application.EnableEvents = False
        Range(Cells(Target.Row, 1), Cells(Target.Row, 9)).Copy _
        Cells(Target.Row + 1, 1)
        Application.EnableEvents = True
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Teste den Code, indem du in Spalte L ein "x" eingibst. Eine neue Zeile sollte automatisch unterhalb eingefügt werden.

Häufige Fehler und Lösungen

  • Problem: Der Code funktioniert nicht, wenn ich ein "x" in Spalte L eingebe.

    • Lösung: Stelle sicher, dass die Zelle in Spalte L tatsächlich die Zelle ist, die der Code überwacht. Überprüfe, ob die Makros aktiviert sind.
  • Problem: Die gesamte Zeile wird kopiert, nicht nur A bis I.

    • Lösung: Achte darauf, dass der Code für den spezifischen Bereich von A bis I angepasst ist. Siehe den Code oben.

Alternative Methoden

Falls du VBA nicht verwenden möchtest, kannst du auch eine Formel oder die Tabellenfunktion in Excel nutzen:

  1. Tabelle erstellen: Wandle deinen Datenbereich in eine Tabelle um (Strg + T).
  2. Neue Zeile einfügen: Verwende Tab, um automatisch eine neue Zeile am Ende der Tabelle einzufügen.
  3. Daten kopieren: Du kannst auch manuell die Zeile kopieren und unterhalb einfügen, indem du die Zellen auswählst und mit Strg + C (kopieren) und Strg + V (einfügen) arbeitest.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Funktion nutzen kannst:

  • Beispiel 1: Wenn du eine To-Do-Liste hast und ein "x" für abgeschlossene Aufgaben in Spalte L setzt, wird die Aufgabe mit den dazugehörigen Informationen in einer neuen Zeile gespeichert.
  • Beispiel 2: Bei einer Budgettabelle kannst du bei jeder neuen Ausgabe ein "x" eintragen, wodurch eine neue Zeile für die nächste Ausgabe generiert wird.

Tipps für Profis

  • Verwende Tastenkombinationen: Wenn du oft Zeilen unterhalb einfügst, kannst du auch die Tastenkombination Strg + Shift + + verwenden, um schnell eine neue Zeile einzufügen.
  • Automatisiere weiter: Du kannst den VBA-Code erweitern, um weitere Bedingungen hinzuzufügen, wie z.B. das Einfügen des aktuellen Datums oder das automatisierte Ausfüllen von Zellen.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um mehr als nur A bis I zu kopieren?
Ja, du kannst den Bereich im Code anpassen, indem du die Zahlen in Range(Cells(Target.Row, 1), Cells(Target.Row, 9)) entsprechend änderst.

2. Wie kann ich prüfen, ob der VBA-Code funktioniert?
Du kannst das testen, indem du eine Zelle in Spalte L auswählst und ein "x" eingibst. Wenn eine neue Zeile erscheint, funktioniert der Code.

3. Gibt es eine Möglichkeit, die letzte Zeile automatisch zu ermitteln und darunter einzufügen?
Ja, du kannst den VBA-Code erweitern, um die letzte Zeile zu ermitteln, bevor du die neue Zeile einfügst.

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