HERBERS Excel-Forum - das Archiv

Thema: Neue Zeilen mit variablem Inhalt einfügen

Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hallo liebe Community,

ich bin hier nagelneu im Forum, aber ich habe hier bereits einige Lösungen für meine Probleme mit VBA gefunden und anwenden können.
Ich würde meine Kenntnisse in VBA als gering bezeichnen, da ich meist Copy & Paste betreibe und/oder den Makrorecorder nutze um meine Vorhaben umzusetzen.

Nun habe ich aber ein Problem und bisher noch keine passende Antwort im Netz darauf gefunden.

Ich habe eine Tabelle in einem Arbeitsblatt, welche im Bereich A6:P1813 bearbeitet wird [Überschrift mit AutoFilter in Zeile 5].
Wenn in Spalte N der Wert "RV - NEU" ausgegeben worden ist möchte darunter 4 neue Zeilen einfügen.
In den 4 neuen Zeilen benötige ich jeweils den Inhalt inkl. Formeln aus den Spalten A:L und Spalte O.
Die Formeln befinden sich in den Spalten B,L und O.
Kleine Besonderheit, ich müsste die Formel in Spalte L sogar 5x noch unten ziehen/kopieren, denn die summiert den Wert aus der darüberliegenden Zeile mit dem Wert aus der gleichen Zeile in Spalte J [Beispiel in L26: L25+J26]. Beim Einfügen neuer Zeilen stimmt dann der Bezug nicht mehr in der nächsten befüllten Zelle in Spalte L.
Anschließend soll der Wert "RV - NEU" in Spalte N durch den Wert "RV - Bearbeitet" ersetzt werden.

Die Werte "RV - NEU" können auch mehrmals direkt untereinander stehen.
Die zu kopierenden Inhalte sind für jeden einzelnen Eintrag "RV-NEU" nicht identisch mit den der anderen Einträge.

Das Einfügen der neuen Zeilen und das Ersetzen des Textes habe ich als einzelne Schritte zwar hinbekommen, doch leider habe ich nichts für den Schritt dazwischen gefunden.
Ich nutze MS Office LTSC Professionel Plus 2024, konnte aber die Version nicht auswählen.

Gibt es hier jemanden, der die Muße hat mir hierbei unter die Arme zu greifen?
Ich bin um jede Hilfe dankbar.

Lieben Gruß Olli
AW: Neue Zeilen mit variablem Inhalt einfügen
ralf_b
ist deine Tabelle als intelligente Tabelle formatiert? Wenn ja werden Formeln automatisch bei neuen Zeilen übernommen. Die Formeln sollten die für intelligente Tabellen optimierte Schreibweise beinhalten. Dann gibts auch keine Bezugsprobleme bei neuen Zeilen mittendrin.
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hallo ralf_b,

vielen Dank für deinen Ansatz. Sollte auch kein Problem sein, dies umzusetzen. Ich werde darüber nachdenken.
Aber es löst ja nicht mein eigentliches Problem, die neuen Zeilen einzufügen.
Hier benötige ich erstmal Hilfe und wenn dein Ansatz dazu beiträgt, mein Problem zu lösen, setze ich es umgehend um.

Besten Dank erstmal.

Gruß Olli
AW: Neue Zeilen mit variablem Inhalt einfügen
GerdL
Hallo Oliver,

fülle bitte eine leere Tabelle in Zeile 6 mit Musterdaten gemäß deiner Erlärung u. die Zeile 7 in A7:P7 mit
irgendwelchen Dummydaten.

Probiere folgenden Code u. berichte, ob dies deinen Vorstellungen entspricht.
Sub Unit()


If Range("N6") = "RV - NEU" Then

Rows(6).Copy
Rows("7:11").Insert shift:=xlShiftDown

Range("M7:M11,P7:P11").ClearContents

Range("A11:K11,N11:O11").ClearContents

Range("N6:N10") = "RV - Bearbeitet"

End If

End Sub


Gruß Gerd
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hier der neue Link zur Muster-Datei:
https://www.herber.de/bbs/user/174845.xlsx

AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Link 3.0 zur Musterdatei: https://www.herber.de/bbs/user/174846.xlsx

Warum funktioniert das hochladen nicht? Beim Testaufruf ist noch alles i.O..
Merkwürdig.
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Nun LINK 4.0:
https://www.herber.de/bbs/user/174847.xlsx

Ich denke, da ich den Link gefettet hervorgehoben habe, hat er die Zeichen beim Link mit angefügt.
Also verzichte ich jetzt mal auf das fetten. ;-)
Es müssten auch die anderen Links funktionieren, wenn man die Zusatzzeichen weglässt und den Link direkt im Browser eingibt.
AW: Neue Zeilen mit variablem Inhalt einfügen
GerdL
Auf ein Neues ohne Musterdatei.
Sub Unit_3()


Dim lngZeile As Long

For lngZeile = Cells(Rows.Count, "N").End(xlUp).Row To 6 Step -1
If Cells(lngZeile, "N") = "RV - NEU" Then
Rows(lngZeile).Copy
Rows(lngZeile + 1).Resize(5).Insert shift:=xlShiftDown
Union(Range(Cells(lngZeile + 1, "M"), Cells(lngZeile + 1, "N")).Resize(5), Cells(lngZeile + 1, "P").Resize(5)).ClearContents
Range(Cells(lngZeile + 5, "A"), Cells(lngZeile + 5, "K")).ClearContents
Range(Cells(lngZeile + 5, "N"), Cells(lngZeile + 5, "O")).ClearContents
Cells(lngZeile, "N") = "RV - Bearbeitet"
Application.CutCopyMode = False
End If
Next

End Sub

Gruß Gerd
AW: Neue Zeilen mit variablem Inhalt einfügen
GerdL
Moin,

u.a. ist "Neu" nicht gleich "NEU" gewesen.
Sub Unit_4()



Dim lngZeile As Long

For lngZeile = Cells(Rows.Count, "N").End(xlUp).Row To 6 Step -1
If Cells(lngZeile, "N") = "RV - Neu" Then
Range(Cells(lngZeile, "A"), Cells(lngZeile, "P")).Copy
Range(Cells(lngZeile + 1, "A"), Cells(lngZeile + 1, "P")).Resize(5).Insert shift:=xlShiftDown
Union(Range(Cells(lngZeile + 1, "M"), Cells(lngZeile + 1, "N")).Resize(5), Cells(lngZeile + 1, "P").Resize(5)).ClearContents
Range(Cells(lngZeile + 5, "A"), Cells(lngZeile + 5, "K")).ClearContents
Range(Cells(lngZeile + 5, "N"), Cells(lngZeile + 5, "O")).ClearContents
Cells(lngZeile, "N") = "RV - Bearbeitet"
Application.CutCopyMode = False
End If
Next

End Sub

Gruß Gerd
AW: Neue Zeilen mit variablem Inhalt einfügen
GerdL
Und zu guter Letzt.
Sub Unit_X()


Dim lngZeile As Long

For lngZeile = Cells(Rows.Count, "N").End(xlUp).Row To 7 Step -1
If Cells(lngZeile, "N") = "RV - Neu" Then
Range("A" & lngZeile).Resize(1, 16).Copy
Range("A" & lngZeile + 1).Resize(4, 16).Insert shift:=xlShiftDown
Union(Range(Cells(lngZeile + 1, "M"), Cells(lngZeile + 1, "N")).Resize(4), Cells(lngZeile + 1, "P").Resize(4)).ClearContents
Cells(lngZeile, "N") = "RV - Bearbeitet"
Application.CutCopyMode = False
End If
Next

End Sub

Gruß Gerd
GELÖST
Oliver Cl.
Moin Gerd,

vielen lieben Dank für deine Geduld und Mühe.
Jetzt passt alles und läuft prima. Das erspart mir eine ganze Menge an Arbeit/Zeit.

Nur das "Problem" mit der Formel in Spalte L bleibt bestehen.
Hier sollte es bestimmt ein Kopier-Makro geben, welches ich finden kann für meinen Zweck.
Aber erstmal ziehe ich die Formel runter und alles ist schick.

Ich betrachte diesen Thread als gelöst.

Kann ich mich irgendwie erkenntlich zeigen?

Lieben Gruß
Olli

AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Moin Gerd,

sorry für den NEU-Neu-Fehler.

Code hat schon mal funktioniert und es ist fast das Ergebnis herausgekommen, was ich wollte. Ein leises Juhu. ;-)
Es wird immer eine fünfte Zeile mit eingefügt, wo nur die Summe in Spalte L ausgegeben wird.
Dies brauche ich so nicht.
Und dann stimmt nach den eingefügten Zeilen in der darauffolgenden Zelle in Spalte L die Formel leider doch nicht und
merkt sich den alten Bezug, bevor die Zeilen eingefügt wurden.
Beispiel Zelle L13:
=L7+J13 

Richtig wäre:
=L12+J13

Das wäre jetzt aber halb so wild, dann ziehe ich halt die Formel neu herunter.

Schon mal besten Dank.

LG Olli
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hallo Gerd,

vielen Dank für deine Mühe.
Was mache ich verkehrt beim hochladen der Musterdatei?
Auch beim dritten Anlauf funktioniert das nicht.

Dein neuer Code startet bei mir gar nicht. Es passiert einfach nix.
Hab den vorigen zur Sicherheit nochmal getestet und da kam zumindest die bekannte Fehlermeldung.

Lieben Gruß
Olli
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hallo Gerd,

vielen Dank für deinen Input.

Es wurden 4 neue Zeilen eingefügt, die auch die richtigen Daten enthalten. So stelle ich mir das vor. :-)
Aber es wurde auch eine fünfte Zeile [Zeile 11] generiert, die die Summe in Spalte L korrekt ausgibt.
Ab Zelle L12 passt die Formel dann nicht mehr.
Es wurde auch der Wert "RV - Bearbeitet" in die neuen Zeilen unter Spalte N eingetragen, die sollen aber leer bleiben.
Es soll nur der Wert "RV - Neu" in "RV - Bearbeitet" geändert werden, also am besten nach dem Einfügen der neuen Zeilen.

Leider funktioniert das nur für Zeile 6. Wie bekomme ich das für die restlichen Zeilen hin?
Es gibt ja noch mehre Einträge mit dem Wert "RV - Neu" an unterschiedlichen Zeilenpositionen in Spalte N.

Ich habe mal eine Musterdatei mit hochgeladen. => https://www.herber.de/bbs/user/174842.xlsx
Es handelt sich um eine Umsatzliste und ich muss diese nachträglich bearbeiten, um summierte Umsatzposten korrekt zu deklarieren.
Ich denke, der Ansatz von ralf_p, die Tabelle als Intelligente Tabelle zu formatieren dürfte das Problem mit den Formeln beheben.
Dazu werde ich die Zeile 6 dann als Übertragszeile nutzen. Nicht ganz schön, aber OK.
An jeder Stelle, wo sich der Wert "RV - Neu" in Spalte N befindet sollen darunter die 4 neuen Zeilen eingefügt werden.
Der Wert "RV - Neu" soll nur in der Ursprungszeile in "RV - Bearbeitet" geändert werden.
Die Spalten M, N & P sollen in den neuen Zeilen leer bleiben.

Ich hoffe, dass das jetzt besser verständlich ist.

Lieben Gruß
Olli
AW: Neue Zeilen mit variablem Inhalt einfügen
GerdL
Moin Oliver,

der Link führt nicht zur Musterdatei. Teste mal.
Sub Unit_2()


Dim lngZeile As Long

For lngZeile = Cells(Rows.Count, "N") To 6 Step -1
If Cells(lngZeile, "N") = "RV - NEU" Then
Rows(lngZeile).Copy
Rows(lngZeile + 1).Resize(5).Insert shift:=xlShiftDown
Union(Range(Cells(lngZeile + 1, "M").Resize(4), Cells(lngZeile + 1, "P").Resize(4))).ClearContents
Range(Cells(lngZeile + 4, "A"), Cells(lngZeile + 4, "K")).ClearContents
Range(Cells(lngZeile + 4, "N"), Cells(lngZeile + 4, "O")).ClearContents
Cells(lngZeile, "N") = "RV - Bearbeitet"
Application.CutCopyMode = False
End If
Next

End Sub

Gruß Gerd
AW: Neue Zeilen mit variablem Inhalt einfügen
Oliver Cl.
Hallo Gerd,

ich habe den Code eingefügt und den Testlauf gestartet.
Nun bekomme ich folgende Fehlemerldung:
''Fehler beim Kompilieren: Argument ist nicht optional.''
Und es wird der Befehl ''Union'' markiert.

Ich kann es somit leider nicht testen.

Ich weiß nicht warum der Link zur Musterdatei nicht mehr funktioniert.
Ich habe die Datei erneut hochgeladen. Zumindest beim Testaufruf war noch alles i.O..

https://www.herber.de/bbs/user/174845.xlsx


Lieben Gruß Olli