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

Forumthread: Zeile einfügen per Makro mit Formeln

Zeile einfügen per Makro mit Formeln
Rolf
Hallo zusammen,
für euch wahrscheinlich eine Kleinigkeit, aber ich komme einfach nicht weiter und bitte euch um Hilfe
Ich möchte ganz einfach mit einem Makro welches ich einer Schaltfläche zuweisen möchte
Eine neue Zeile einfügen und die darüber liegenden Formeln in diese Zeilen kopieren.
Bei meinem Versuch wird die Zeile aber immer in der Zeile eingefügt, in der ich das Makro aufgenommen habe. Es soll aber eine neue Zeile vor der Zeile deren Zelle markiert ist eingefügt werden.
Das Makro füge ich hier mal ein.
Es heißt „Zeilen_einfügen“
Sub Zeilen_einfügen()
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
Range("B8").Select
Selection.EntireRow.Insert
Range("B7:N7").Select
Selection.Copy
Range("B8").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B8").Select
ActiveCell.FormulaR1C1 = "=R[-1]C[1]"
Range("B9").Select
End Sub

Danke für eure Hilfe
Anzeige
AW: Zeile einfügen per Makro mit Formeln
16.09.2010 09:34:11
JogyB
Hallo Rolf,
Sub Zeilen_einfügen()
Application.ScreenUpdating = False
Selection.EntireRow.Insert
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Selection.EntireRow
.FormulaR1C1 = .Offset(-1, 0).Resize(1).FormulaR1C1
End With
Application.ScreenUpdating = True
End Sub

Gruß, Jogy
Anzeige
AW: Zeile einfügen per Makro mit Formeln
16.09.2010 12:17:46
Rolf
Hallo Jogy,
danke für deine Mühe.
Das mit dem With habe ich nicht verstanden.....meinst du wenn man den Curser an eine bereits eingefügte Zeile darüber positioniere und das Makro ausführe, bekomme ich den Laufzeitfehler 1004?
Deine Lösung ist schon fast gut....nur leider werden mir die in der darüberliegenden Zeile einfachen Formeln nicht in die neu eingefügte einkopiert. Die neuen Zeilen sind allesamt leer.
Würde es helfen wenn ich die Datei hochlade?
Grüße Rolf
Anzeige
AW: Zeile einfügen per Makro mit Formeln
16.09.2010 14:24:05
JogyB
Hallo Rolf,
mit dem With lässt sich der Code verkürzen (und auch beschleunigen), da man im konkreten Fall das Selection nicht jedes Mal schreiben muss. Nur ist in diesem Fall das erste Selection ein anderes als im weiteren Code. Deswegen darf man das nicht in das With einschliessen.
Ich habe es gerade nochmal getestet und die Formeln werden bei mir übernommen... kannst mal eine Beispieldatei hochladen, die kann ich aber erst heute abend anschauen (Proxy blockiert hier so gut wie alle Downloads). Evtl. ist das auch ein Unterschied zwischen XP und 2003.
Probier mal noch folgendes:
Sub Zeilen_einfügen()
Application.ScreenUpdating = False
Selection.EntireRow.Insert
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Selection.EntireRow
.Offset(-1, 0).Resize(1).Copy
.PasteSpecial Paste:=xlPasteFormulas
End With
Application.ScreenUpdating = True
End Sub

Gruß, Jogy
Anzeige
AW: Zeile einfügen per Makro mit Formeln
16.09.2010 22:37:45
Rolf
Hallo Jogy,
entschuldige ich komme auch erst eben von der Arbeit nach Hause......
also die zweite Lösung hat sofort funktioniert. Aber auch deine erste funktionierte eben beim Test.
Nur noch eine Frage....wenn ich den Curser nicht auf die unterste freie Zeile setze und das Makro starte
wird der Bezug der darunter stehenden Zeile natürlich nicht nachgezogen.
Beispiel: Zelle B10 ist gleich C9. Gehe ich jetzt auf Zeile 10 und starte das Makro wird ja aus Zeile 10 die Zeile 11. Somit ist Zelle B11 gleich C9. C9 sollte aber C10 sein.
Gibt es eine Möglichkeit dies im Makro noch mit einzubauen?
Dann wäre es perfekt.
Ich versuche auch gleich die Datei mal hochzuladen. Ist aber noch im Aufbau also nicht wundern.....da stimmt noch einiges andere nicht.
Danke dir
Gruß Rolf
Anzeige
AW: Zeile einfügen per Makro mit Formeln
17.09.2010 10:04:35
JogyB
Hallo Rolf,
schaue ich mir gegen später noch an... kann hier nur keine Dateien herunterladen (wg. Proxy).
Gruß, Jogy
AW: Zeile einfügen per Makro mit Formeln
17.09.2010 11:50:15
Rolf
Hallo Jogy,
ja kein Problem. Bin ja froh wenn du mir hilfst.
Muss dann auch in den Dienst und komme erst so gegen 21:00 Uhr wieder nach Hause.
Danke
Gruß Rolf
Anzeige
mal nachgefragt...
17.09.2010 19:47:33
JogyB
Hallo Rolf,
bei der Struktur der Tabelle ist das nicht ganz trivial... wenn ich es richtig sehe, ist ja nur in Spalte B eine Formel, die einen relativen Bezug (also ohne das $) zu einer anderen Zeile hat. Im Endeffekt müsste man dann hier die Formel wieder reinkopieren.
Sub Zeilen_einfügen()
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
If Selection.Areas.Count > 1 Then
MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
Exit Sub
End If
Application.ScreenUpdating = False
Selection.EntireRow.Insert
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Selection.EntireRow
.Offset(-1, 0).Resize(1).Copy
.PasteSpecial Paste:=xlPasteFormulas
' Wenn in der Zeile unter den eingefügten Zeilen eine Formel in
' Spalte B steht, dann muss die korrigiert werden
If .Resize(1, 1).Offset(.Rows.Count, 1).HasFormula Then
.Resize(1, 1).Offset(.Rows.Count, 1).FormulaR1C1 = _
.Resize(1, 1).Offset(-1, 1).FormulaR1C1
End If
End With
Application.ScreenUpdating = True
End Sub

Gruß, Jogy
Anzeige
AW: mal nachgefragt...
17.09.2010 21:31:36
Rolf
Hallo Jogy,
du hast das genau richtig erkannt.
Jetzt funktioniert das Kopieren einwandfrei.
Eine Frage habe ich noch dazu. Kann man die Auswahl nach dem Einfügen der neuen Zeile, also die Ameisenlinie um die vorherige Zeile, irgendwie gleich wieder aufheben? Also ein Esc oder dergleichen noch in das Makro mit einfügen vor End Sup?
Natürlich wird sie sofort nach einem Eintrag in einer Zelle automatisch aufgehoben, aber wenn das gleich wieder weg wäre wäre es perfekt ;-)
Gruß Rolf
Anzeige
AW: mal nachgefragt...
17.09.2010 22:29:01
JogyB
Hallo Rolf,
einfach Application.CutCopyMode = False vor das Application.ScreenUpdating = True
Gruß, Jogy
AW: mal nachgefragt...
17.09.2010 22:38:46
Rolf
Hallo Jogy,
super!
Dann bedanke ich mich recht herzlich für deine Mühen.
Das hat mir sehr gut weiter geholfen.
Wünsche dir noch ein schönes WE
Gruß Rolf
Anzeige
;

Forumthreads zu verwandten Themen

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 mit Makros in Excel einfügen und Formeln übernehmen


Schritt-für-Schritt-Anleitung

Um ein Excel Makro zu erstellen, das eine neue Zeile einfügt und die Formeln aus der darüber liegenden Zeile kopiert, folge diesen Schritten:

  1. Öffne VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul hinzufügen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Makro-Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub Zeilen_einfügen()
       Application.ScreenUpdating = False
       If Selection.Areas.Count > 1 Then
           MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
           Exit Sub
       End If
       Selection.EntireRow.Insert
       With Selection.EntireRow
           .Offset(-1, 0).Resize(1).Copy
           .PasteSpecial Paste:=xlPasteFormulas
           If .Resize(1, 1).Offset(.Rows.Count, 1).HasFormula Then
               .Resize(1, 1).Offset(.Rows.Count, 1).FormulaR1C1 = _
               .Resize(1, 1).Offset(-1, 1).FormulaR1C1
           End If
       End With
       Application.CutCopyMode = False
       Application.ScreenUpdating = True
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und wechsle zurück zu Excel. Weise das Makro einer Schaltfläche zu oder führe es direkt über die Makro-Liste aus (ALT + F8).


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn das Makro auf eine Auswahl zugreift, die nicht gültig ist. Stelle sicher, dass du eine einzelne Zeile auswählst, bevor du das Makro ausführst.

  • Keine Formeln kopiert: Wenn die Formeln nicht übernommen werden, überprüfe, ob die ursprüngliche Zeile tatsächlich Formeln enthält und ob die richtige Zeile ausgewählt wurde.

  • Ameisenlinie bleibt sichtbar: Um die Auswahl nach dem Einfügen der Zeile aufzuheben, füge Application.CutCopyMode = False vor Application.ScreenUpdating = True ein.


Alternative Methoden

Neben dem Makro gibt es auch andere Möglichkeiten, um eine Zeile in Excel einzufügen:

  • Manuelles Einfügen: Mit der rechten Maustaste auf die Zeilennummer klicken und Zeile einfügen wählen. Dies ist allerdings nicht automatisiert und erfordert manuelle Anpassungen.

  • Tastenkombination: Wähle die Zeile unterhalb der gewünschten Position aus und drücke Strg + Shift + + (Plus-Taste), um eine Zeile einzufügen.


Praktische Beispiele

Wenn du das Makro anwendest, wird Folgendes erreicht:

  1. Markiere eine Zelle in der Zeile, unter der die neue Zeile eingefügt werden soll.
  2. Führe das Makro Zeilen_einfügen aus.
  3. Die neue Zeile wird eingefügt und die Formeln aus der darüber liegenden Zeile werden in die neue Zeile kopiert.

Hier ist ein praktisches Beispiel:

  • Wenn du in Zeile 10 eine Formel hast, die auf Zeile 9 verweist (z.B. =C9), und du das Makro in Zeile 10 ausführst, wird in Zeile 10 eine neue Zeile eingefügt, und die Formel in Zeile 11 wird automatisch auf =C10 angepasst.

Tipps für Profis

  • Anpassung des Makros: Du kannst das Makro weiter anpassen, um zusätzliche Funktionen wie das Einfügen von spezifischen Werten oder das Formatieren der neuen Zeile zu integrieren.

  • Fehlersuche: Verwende Debug.Print innerhalb des Makros, um Werte und Status während der Ausführung zu überprüfen.

  • Schnellzugriff: Füge das Makro zur Symbolleiste für den Schnellzugriff hinzu, um es jederzeit schnell auszuführen.


FAQ: Häufige Fragen

1. Wie kann ich das Makro für eine andere Arbeitsmappe verwenden?
Du kannst das Makro in jede Arbeitsmappe kopieren, indem du den VBA-Editor öffnest und den Code in ein neues Modul der gewünschten Arbeitsmappe einfügst.

2. Funktioniert dieses Makro in allen Excel-Versionen?
Das Makro sollte in den meisten Versionen von Excel ab 2003 funktionieren, allerdings können einige Funktionen in neueren Versionen optimiert sein.

3. Kann ich das Makro anpassen, um mehrere Zeilen auf einmal einzufügen?
Ja, du kannst den Code anpassen, um mehrere Zeilen auf einmal einzufügen, indem du eine Schleife implementierst, die die Anzahl der gewünschten Zeilen berücksichtigt.

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