Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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
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
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
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
AW: mal nachgefragt...
17.09.2010 22:29:01
JogyB
Hallo Rolf,
einfach Application.CutCopyMode = False vor das Application.ScreenUpdating = True
Gruß, Jogy
Anzeige
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

164 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige