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

Zeile einfügen und Format übernehmen

Forumthread: Zeile einfügen und Format übernehmen

Zeile einfügen und Format übernehmen
29.01.2021 09:47:10
Nicolai
Hallo liebe Herber Community,
habe folgende Aufgabe:
1. Ich möchte in Tabellenblatt A eine neue Zeile einfügen. Diese soll dann in Tabellenblatt B _ auch automatisch übernommen werden. Das habe ich wie folgt gelöst, Zeile anklicken, Makro ausführen, funktioniert:

Sub NeueZeile()
Dim Zl As Long
Zl = ActiveCell.Row
ActiveCell.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
With Sheets("MSR")
.Cells(Zl, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With
End Sub

2. Nun möchte ich jedoch, dass in der neuen Zeile auch die Formeln und die Formatierung der darunterliegenden Zeile übernommen wird, unzwar in Tabellenblatt A und Tabellenblatt B.
Kann mir jemand weiterhelfen?
Vielen Dank vorab,
Gruß Nicolai
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile einfügen und Format übernehmen
29.01.2021 11:09:20
fcs
Hallo Nicolai,
probiere es mal mit diesem Makrovorschlag.
LG
Franz
Sub NeueZeile()
Dim Zl As Long
Zl = ActiveCell.Row
Call EinfuegenZeile(wks:=ActiveSheet, Zeile:=Zl)
Call EinfuegenZeile(wks:=Worksheets("MSR"), Zeile:=Zl)
End Sub
Sub EinfuegenZeile(wks As Worksheet, Zeile As Long)
Dim Zelle As Range
With wks
.Cells(Zeile, 1).EntireRow.Copy
.Cells(Zeile, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
For Each Zelle In .Range(.Cells(Zeile, 1), .Cells(Zeile, .Columns.Count).End(xlToLeft))
If Not Zelle.HasFormula Then Zelle.ClearContents
Next
End With
End Sub

Anzeige
AW: Zeile einfügen und Format übernehmen
03.02.2021 06:13:13
Nicolai
Hallo Franz,
danke für deine Antwort. Beim Ausführen bekomme ich einen Bug bei Zelle.ClearContents in folgender Zeile:

If Not Zelle.HasFormula Then Zelle.ClearContents
Hast du ne Idee woran das liegen könnte?
Danke vorab.
Gruß Nicolai
Anzeige
AW: Zeile einfügen und Format übernehmen
03.02.2021 18:34:06
fcs
Hallo Nicolai,
falls du in den Zeilen verbundene Zellen hast, dann probiere es mit folgender Anpassung.
LG
Franz
Sub NeueZeile()
Dim Zl As Long
Zl = ActiveCell.Row
Call EinfuegenZeile(wks:=ActiveSheet, Zeile:=Zl)
Call EinfuegenZeile(wks:=Worksheets("MSR"), Zeile:=Zl)
End Sub
Sub EinfuegenZeile(wks As Worksheet, Zeile As Long)
Dim Zelle As Range
With wks
.Cells(Zeile, 1).EntireRow.Copy
.Cells(Zeile, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
For Each Zelle In .Range(.Cells(Zeile, 1), .Cells(Zeile, .Columns.Count).End(xlToLeft))
If Not Zelle.HasFormula Then Zelle.MergeArea.ClearContents       'angepasst 2021-02-03
Next
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zeile einfügen und Format übernehmen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne den VBA-Editor in Excel (ALT + F11) und füge ein neues Modul hinzu.

  2. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub NeueZeile()
       Dim Zl As Long
       Zl = ActiveCell.Row
       Call EinfuegenZeile(wks:=ActiveSheet, Zeile:=Zl)
       Call EinfuegenZeile(wks:=Worksheets("MSR"), Zeile:=Zl)
    End Sub
    
    Sub EinfuegenZeile(wks As Worksheet, Zeile As Long)
       Dim Zelle As Range
       With wks
           .Cells(Zeile, 1).EntireRow.Copy
           .Cells(Zeile, 1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
           For Each Zelle In .Range(.Cells(Zeile, 1), .Cells(Zeile, .Columns.Count).End(xlToLeft))
               If Not Zelle.HasFormula Then Zelle.ClearContents
           Next
       End With
    End Sub
  3. Makro ausführen: Klicke in die Zeile, über der du eine neue Zeile einfügen möchtest, und führe das Makro aus (F5 im VBA-Editor oder über die Excel-Oberfläche).

  4. Formatierung und Formeln übernehmen: Der Code nutzt CopyOrigin:=xlFormatFromLeftOrAbove, um die Formatierung von der darüberliegenden Zeile zu übernehmen.


Häufige Fehler und Lösungen

Fehler 1: Zelle.ClearContents verursacht einen Fehler.

Lösung: Wenn du verbundene Zellen hast, anstatt Zelle.ClearContents zu verwenden, ändere den Code zu:

If Not Zelle.HasFormula Then Zelle.MergeArea.ClearContents

Alternative Methoden

Falls du keine VBA-Lösungen nutzen möchtest, kannst du auch die integrierten Excel-Funktionen verwenden:

  1. Manuelles Einfügen: Klicke mit der rechten Maustaste auf die Zeilennummer und wähle „Zeile einfügen“.
  2. Format übertragen: Verwende den Format-Pinsel, um das Format von einer Zeile auf die neue Zeile zu übertragen.

Praktische Beispiele

  1. Beispiel für die Verwendung des Makros: Angenommen, du hast eine Tabelle mit Werten in Zeile 5, und du möchtest eine neue Zeile 5 einfügen. Gehe zu Zeile 5, führe das Makro aus, und die neue Zeile wird mit den Formeln und Formaten der alten Zeile erstellt.

  2. Mehrere Zeilen einfügen: Du kannst den Code leicht anpassen, um mehrere Zeilen auf einmal einzufügen, indem du eine Schleife hinzufügst.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False am Anfang des Makros und Application.ScreenUpdating = True am Ende, um die Ausführung zu beschleunigen.
  • Experimentiere mit CopyOrigin:=xlFormatFromRightOrBelow, um die Formatierung von der darunterliegenden Zeile zu übernehmen.
  • Verwalte deine Makros in einer separaten Datei, um sie einfach wiederverwenden zu können.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Makro anpassen, um nur in einem bestimmten Arbeitsblatt zu arbeiten?
Antwort: Ändere den Code in der NeueZeile-Subroutine, um das spezifische Arbeitsblatt zu referenzieren, z.B. Set wks = ThisWorkbook.Worksheets("DeinBlattname").

2. Frage
Was ist xlFormatFromLeftOrAbove?
Antwort: Es handelt sich um einen Parameter in Excel VBA, der verwendet wird, um die Formatierung von der darüberliegenden oder der linken Zelle zu übernehmen, wenn eine neue Zeile eingefügt wird.

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