Herbers Excel-Forum - das Archiv

VBA Hilfe ganze Zeilen verschieben, neue einfügen


Betrifft: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: Chris

Geschrieben am: 13.09.2019 15:32:44
Hallo zusammen
Ich habe ein Frage betreffend meiner To-Do Liste. Spalte A ist leer. Tabelle geht von Spalte B bis Spalte I, wobei Zeile 1 bis und mit Zeile 7 überschriften sind. Der eigentliche Tabelleninhalt beginnt also in der Zeile 8 Spalten B-I.
Ich habe drei Probleme, die ich zu lösen versuchte, aber es leider nicht schaffte.
Problem 1: In der letzten Spalte der Tabelle (I) gebe ich den Status der Aufgabe an. Wenn ich diesen auf "erledigt" setzte, soll die ganze Zeile mit der erledigten Aufgabe in die Tabelle 3 verschoben werden. Das klappt eigentlich, allerdings wird in der Tabelle 3 immer nur ein Eintrag angezeigt. Markiere ich auf Tabelle 1 eine weitere Aufgabe als "erledigt" wird der alte Eintrag in Tabelle 3 überschrieben, als eine Zeile nach unter geschoben, sodass der neue Eintrag oben angezeigt werden kann. Wie muss ich meine Formel anpassen?
Formel zum Problem 1:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
Set Target = Intersect(Target, Range("I1:I35"))
If Target Is Nothing Then Exit Sub
If Target = "erledigt" Then
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 10)).Copy _
Destination:=Sheets("Tabelle3").Cells(Rows.Count, 1).End(xlUp).Offset(7, 0)
Target.EntireRow.Delete
End If
End Sub

Problem 2: Ich möchte das Umgekehrte machen. Wie lautet die Formel, wenn ich den Status in der Tabelle 3 ändere, sodass der Status einer Aufgabe wieder ein anderer ist als "erledigt"? Diese Zeile soll dann in die letzte Zeile der Tabelle 1 verschoben werden.
Problem 3: Die Spalten und Zeilen im Arbeitsblatt Tabelle 1 sind formatiert und enthalten Formeln. Wie kann eine Formel lauten, so dass immer 3 leere Zeilen mit derselben Formatierung und denselben Formeln nach dem letzten Eintrag in Spalte D angezeigt werden (in Spalte D ist die eigentliche Aufgabe beschrieben, hier steht also immer etwas)? Die Tabelle mit den Aufgaben beginnt ja bei B8, angenommen sie ist mit 10 Aufgaben befüllt (also Zeilen 8-17), hätte ich gerne, dass die Zeilen 18-20 leer, aber formatiert angezeigt werden. Wenn ich dann eine neue Aufgabe in Zeile 18 erfasse, soll die formatierte Tabelle wachsen, so dass neu Zeile 21 leer, aber formatiert angezeigt wird...
Ich hoffe, ihr wisst was ich meine und ihr könnt mir helfen. Vielen Dank!!

Betrifft: AW: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: 1712964.html

Geschrieben am: 13.09.2019 16:01:37
Hallo Chris
du hast deine eigene Lösung in der Aufgabenstellung bereits benannt, siehst aber vor "lauter Baeumen den Wald nicht!"
Der eigentliche Tabelleninhalt beginnt also in der Zeile 8 Spalten B-I. - Frage: Warum suchst du dann die LastZell in Spalte A??? - Da aendert sich doch nix!!!
So wird dein Kopier Code klappen!! -- Sheets("Tabelle3").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) - Suche LastCell in Spalte B mit Offset(1, 0)
Willst du wieder zurück kopieren probier bitte in Tabelle3 denselben Code, nur leicht geandert.
Welchen Text du da anstelle von "erledigt" nimmst, ob "zurück", "wiederherstellen" bleibt dir überlassen.
mfg Piet
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
Set Target = Intersect(Target, Range("I1:I35"))
If Target Is Nothing Then Exit Sub
If Target = "zurück" Then
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 10)).Copy _
Destination:=Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End Sub


Betrifft: AW: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: 1712976.html

Geschrieben am: 13.09.2019 16:39:14
Hallo Piet
Vielen Dank für deine Hilfe, aber leider klappt das so nicht. Wenn ich die Formel so anpasse, dann wird die entsprechende Zeile zwar in Tabelle 3 verschoben, allerdings in Zeile 6 (mitten in die Titel) und beginnend bei Spalte C. Das Problem, dass diese Zeile dann immer wieder überschrieben wird und nicht nach unten rückt, wenn auf Tabelle 1 eine neue Aufgabe als "erledigt" markiert wird, besteht zudem weiterhin.
In meiner Lösung stimmt die Position, wo die Zeile in Tabelle 3 eingefügt wird, allerdings wird eine neu als "erledigt" markierte Aufgabe nicht oberhalb der bestehenden erledigten Aufgaben in Tabelle 3 verschoben, sondern eine vorhandene Aufgabe in Tabelle 3 Spalte B-I Zeile 8 wird immer überschrieben.
Woran liegt das? Es ist aber gut möglich, dass ich den "Wald vor lauter Bäume nicht mehr sehe"

Betrifft: AW: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: 1712979.html
Geschrieben am: 13.09.2019 17:18:25
Hallo Chris,
so:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 8 Or Target.Column <> 9 Then Exit Sub
If UCase(Target.Value) = "ERLEDIGT" Then
Target.EntireRow.Copy
Worksheets("Tabelle3").Rows(8).Insert xlDown
Target.EntireRow.Delete
End If
End Sub
Gruß Werner

Betrifft: AW: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: 1713018.html

Geschrieben am: 14.09.2019 08:10:58
Hallo Werner
Vielen herzlichen Dank, das klappt so wunderbar wie geplant. Ich muss deine Formel noch genauer ansehen, was genau passiert (Neuling), aber es klappt top. Hast du per Zufall auch eine Formel für mein 3. Problem?
@Piet: kein Problem, vielen Dank für deine Hilfe, ich bin um jeden Input froh!
Ein schönes Wochenende, Chris

Betrifft: AW: VBA Hilfe ganze Zeilen verschieben, neue einfügen
von: 1712990.html
Geschrieben am: 13.09.2019 18:11:33
Hallo zusammen
lag ich mit meinem Rat daneben?? Dann Sorry, würde mich freuen wenn der Code von Werner klappt.
mfg Piet

Betrifft: AW: geschlossen - weil keine AW kam oWt
von: 1713989.html
Geschrieben am: oWt
...

Excel-Beispiele zum Thema "VBA Hilfe ganze Zeilen verschieben, neue einfügen"
Zeilenhöhe in cm festlegen Summe gefilterter Zeilen
Zeilenumbruch Leere Zeilen löschen
Spalten/Zeilen aus- und einblenden Zeilenumbruch in Formel erzwingen
Zeilen und Spalten über ein Drehfeld ein- und ausblenden Alle Kopf-/Fußzeilen-Festlegungen löschen
Fußzeilen beim Öffnen eintragen Zellinhalte zeilenweise sortieren
Bewerten Sie hier bitte das Excel-Portal