skyward159
Lt. Junior Grade
- Registriert
- Nov. 2009
- Beiträge
- 290
Hallo liebe Schwarmintelligenz,
vorab, ich habe keine Ahnung von VBA und nutze ChatGPT um mir zu behelfen.
Folgendes Szenario:
In meiner Datei im ersten Tabellenblatt habe ich meine zu bearbeitenden Fälle gelistet mit verschiedenen Daten wie Namen, Eingangsdatum, Bemerkungen etc. - die letzte Spalte ist mit "Erledigt" betitelt.
Wenn ich in der Spalte erledigt bei einem Fall ein "Ja" reinschreibe, soll der Fall automatisch in mein zweites Tabellenblatt ausgeschnitten werden.
Was funktioniert:
Kopieren der Zeilen aus Blatt 1 und auffüllen der leeren Zeilen
Einfügen der Zeilen in Blatt 2
Was nicht funktioniert:
Lasse ich das Makro ein zweites Mal laufen, werden die Daten in Blatt 2 überschrieben, anstatt das die zu kopierenden Daten in neue Zeilen gesetzt werden.
Das Makro sieht wie folgt aus:
Weiß jemand Rat?
Danke
vorab, ich habe keine Ahnung von VBA und nutze ChatGPT um mir zu behelfen.
Folgendes Szenario:
In meiner Datei im ersten Tabellenblatt habe ich meine zu bearbeitenden Fälle gelistet mit verschiedenen Daten wie Namen, Eingangsdatum, Bemerkungen etc. - die letzte Spalte ist mit "Erledigt" betitelt.
Wenn ich in der Spalte erledigt bei einem Fall ein "Ja" reinschreibe, soll der Fall automatisch in mein zweites Tabellenblatt ausgeschnitten werden.
Was funktioniert:
Kopieren der Zeilen aus Blatt 1 und auffüllen der leeren Zeilen
Einfügen der Zeilen in Blatt 2
Was nicht funktioniert:
Lasse ich das Makro ein zweites Mal laufen, werden die Daten in Blatt 2 überschrieben, anstatt das die zu kopierenden Daten in neue Zeilen gesetzt werden.
Das Makro sieht wie folgt aus:
Code:
Sub VerschiebeNachErledigt()
Dim wsEG As Worksheet
Dim wsErledigt As Worksheet
Dim letzteZeileEG As Long
Dim letzteZeileErledigt As Long
Dim i As Long
Dim nextErledigtRow As Long
' Setze die Arbeitsblätter
Set wsEG = Worksheets("EG")
Set wsErledigt = Worksheets("erledigt")
' Finde die letzte Zeile in den jeweiligen Blättern
letzteZeileEG = wsEG.Cells(wsEG.Rows.Count, "L").End(xlUp).Row
letzteZeileErledigt = wsErledigt.Cells(wsErledigt.Rows.Count, "A").End(xlUp).Row
' Bestimme die nächste freie Zeile im erledigt-Blatt
nextErledigtRow = letzteZeileErledigt + 1
' Durchlaufe die Zeilen im EG-Blatt
For i = 2 To letzteZeileEG ' Annahme: Die Überschriften sind in der ersten Zeile
' Überprüfe, ob in Spalte L "Ja" steht
If UCase(wsEG.Cells(i, "L").Value) = "JA" Then
' Kopiere die Werte nach erledigt in die nächste freie Zeile
wsEG.Rows(i).Copy Destination:=wsErledigt.Rows(nextErledigtRow)
' Erhöhe die nächste freie Zeile im erledigt-Blatt
nextErledigtRow = nextErledigtRow + 1
' Lösche die Zeile in EG
wsEG.Rows(i).Delete
' Verringere i, um die Schleife nach dem Löschen fortzusetzen
i = i - 1
End If
Next i
End Sub
Weiß jemand Rat?
Danke