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

Forumthread: Zeilen kopieren und einfuegen mit VBA

Zeilen kopieren und einfuegen mit VBA
08.04.2019 16:42:21
Lisa
Hallo,
ich habe ein kleines Problem. Ich habe eine Excel Mappe in welcher ich Spalten habe die bedingt formatiert sind, eine Formel enthalten und zwei Zeilen mit einer Dropdown Liste, die ueber die Data Validation erstellt wurden. Ich wuerde gerne mithilfe eines Buttons, der mit einem Makro versehen ist, eine neue Zeile einfuegen, die sowohl die bedingte Formatierung, die Formeln als auch die Dropdown Listen uebernimmt. Ich habe einen VBA Code gefunden, der die Formeln und die Formatierung uebernimmt, das klappt auch ganz gut, es uebernimmt aber nicht die Dropdown Liste.
Der Code sieht so aus:
Sub NeueZeile()
Dim Zeile As Long
With ActiveSheet
'Zeilennummer:
Zeile = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
'Kopieren:
Intersect(.Rows(Zeile - 1), .UsedRange).Copy
.Cells(Zeile, 1).PasteSpecial Paste:=xlPasteFormats            'Formate
.Cells(Zeile, 1).PasteSpecial Paste:=xlPasteFormulas           'Formeln
Application.CutCopyMode = False
'Werte löschen
Intersect(.Rows(Zeile), .UsedRange).SpecialCells(xlCellTypeConstants).ClearContents
'Nummer in Spalte A:
.Cells(Zeile, 1).Value = .Cells(Zeile - 1, 1).Value + 1
'Datum in Spalte B:
.Cells(Zeile, 2).Value = Date
End With
End Sub
Habe sehr wenige VBA Kenntnisse, daher traue ich mich nicht so wirklich damit rumzuspielen.
Vielen Dank schonmal.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen kopieren und einfuegen mit VBA
08.04.2019 16:51:03
Werner
Hallo Lisa,
schon mal mit PasteAll versucht?
Intersect(.Rows(Zeile - 1), .UsedRange).Copy
.Cells(Zeile, 1).PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False 
Gruß Werner
AW: Zeilen kopieren und einfuegen mit VBA
08.04.2019 17:03:02
cysu11
Hi Lisa,
so:
Sub test()
lz = Cells(Rows.Count, 1).End(xlUp).Row
Rows(lz).Copy
Rows(lz).Offset(1, 0).Insert Shift:=xlDown
Application.CutCopyMode = False
End Sub
LG
Alexandra
Anzeige
AW: Zeilen kopieren und einfuegen mit VBA
08.04.2019 17:04:03
Lisa
Hat funktioniert, Danke :)
Gerne u. Danke für die Rückmeldung. o.w.T.
08.04.2019 17:54:04
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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 einfügen mit VBA


Schritt-für-Schritt-Anleitung

Um mit VBA eine neue Zeile zu kopieren und einzufügen, die auch die bedingte Formatierung, Formeln sowie Dropdown-Listen beibehält, kannst du folgendermaßen vorgehen:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (deinDateiname)“ > Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Sub NeueZeile()
    Dim Zeile As Long
    With ActiveSheet
        'Zeilennummer:
        Zeile = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
        'Kopieren:
        Intersect(.Rows(Zeile - 1), .UsedRange).Copy
        .Cells(Zeile, 1).PasteSpecial Paste:=xlPasteFormats            'Formate
        .Cells(Zeile, 1).PasteSpecial Paste:=xlPasteFormulas           'Formeln
        Application.CutCopyMode = False
        'Werte löschen
        Intersect(.Rows(Zeile), .UsedRange).SpecialCells(xlCellTypeConstants).ClearContents
        'Nummer in Spalte A:
        .Cells(Zeile, 1).Value = .Cells(Zeile - 1, 1).Value + 1
        'Datum in Spalte B:
        .Cells(Zeile, 2).Value = Date
    End With
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Weise einem Button das Makro zu, um die Funktion auszuführen.

Häufige Fehler und Lösungen

  • Problem: Dropdown-Listen werden nicht übernommen.
    • Lösung: Verwende die PasteSpecial Methode mit xlPasteAll, um alle Formate einschließlich der Datenvalidierung zu kopieren. Ändere den Code zu:
.Cells(Zeile, 1).PasteSpecial Paste:=xlPasteAll
  • Problem: Fehler beim Ausführen des Makros.
    • Lösung: Stelle sicher, dass die Makros in deinem Excel aktiviert sind und du die richtige Zeile kopierst.

Alternative Methoden

Eine einfache Methode, um eine ganze Zeile zu kopieren und unterhalb einzufügen, ist die Verwendung des folgenden Codes:

Sub ZeileKopierenUndEinfügen()
    Dim lz As Long
    lz = Cells(Rows.Count, 1).End(xlUp).Row
    Rows(lz).Copy
    Rows(lz).Offset(1, 0).Insert Shift:=xlDown
    Application.CutCopyMode = False
End Sub

Dieser Code kopiert die letzte Zeile und fügt sie direkt darunter ein.


Praktische Beispiele

  • Beispiel 1: Du möchtest eine Zeile kopieren, die Formeln, Formatierungen und Dropdown-Listen enthält. Nutze den ersten VBA-Code, um dies zu erreichen.

  • Beispiel 2: Du hast ein Excel-Dokument mit verschiedenen Daten und möchtest nur die letzte Zeile kopieren. Der zweite Code ist dafür optimal.


Tipps für Profis

  • Teste im Vorfeld: Führe deine VBA-Skripte zunächst in einer Kopie deiner Datei aus, um Datenverlust zu vermeiden.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um unerwartete Fehler in deinem Code zu vermeiden.
  • Verstehe die Objekte: Je mehr du über Excel-Objekte und deren Methoden weißt, desto einfacher wird die Automatisierung.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Dropdown-Listen korrekt kopiert werden?
Nutze die PasteSpecial Methode mit xlPasteAll, um sicherzustellen, dass alle Formate, einschließlich der Datenvalidierung, übernommen werden.

2. Funktioniert dieser Code in jeder Excel-Version?
Ja, die meisten VBA-Codes sind ab Excel 2007 kompatibel. Stelle jedoch sicher, dass deine Version Makros unterstützt.

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