Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: MDO75 am November 12, 2012, 08:57:58 Vormittag

Titel: VBA TIP -> nächste freie Zeile
Beitrag von: MDO75 am November 12, 2012, 08:57:58 Vormittag
Hallo Leute,

versuche mich seit gestern mit VBA auseinander zu setzten. Habe hier einen Code der eigentlich funktioniert aber ein Fehler ist scheinbar noch drin. Zum Ablauf : Wenn ich im Arbeitsblatt1 (Projekte) in der Spalte E einen Dropdown mit Erledigt auswähle, soll
die Zeile in das Arbeitsblatt 2 (erledigte Projekte) verschoben werden. Dieses macht es auch, aber leider im in die gleiche Zeile. Hätte es aber lieber fortlaufend in die nächstfreie Zeile verschoben.

hier der Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Erledigte Zeile in Blatt 1
'ausschneiden und in Blatt 2 - in nächste freie Zeile einfügen
'
Dim Zeile As Long
Set Target = Intersect(Target, Range("E1:E2000"))
If Target Is Nothing Then Exit Sub
If Target = "Erledigt" Then
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 9)).Copy _
Destination:=Sheets("erledigte Projekte").Cells(Rows.Count, 1).End(xlUp).Offset(4, 0)
Target.EntireRow.Delete
End If
End Sub

Vieleicht habt ihr da einen Lösungsansatz für mich.. :D

Gruß
Markus



Titel: Antw: VBA TIP -> nächste freie Zeile
Beitrag von: Beverly am November 12, 2012, 10:09:03 Vormittag
Hi Markus,

Private Sub Worksheet_Change(ByVal Target As Range)
'Erledigte Zeile in Blatt 1
'ausschneiden und in Blatt 2 - in nächste freie Zeile einfügen
'
   Dim Zeile As Long
   Set Target = Intersect(Target, Range("E1:E2000"))
   If Not Target Is Nothing Then
      If Target = "Erledigt" Then
         With Worksheets("erledigte Projekte")
            Zeile = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
            If Zeile < 5 Then Zeile = 5
            Range(Cells(Target.Row, 1), Cells(Target.Row, 9)).Copy .Cells(Zeile, 1)
            Target.EntireRow.Delete
         End With
      End If
   End If
End Sub

Bis später,
Karin
Titel: Antw: VBA TIP -> nächste freie Zeile
Beitrag von: MDO75 am November 12, 2012, 16:07:36 Nachmittag
Hallo nochmal,

Kommando zurück, leider klappt der Code nur in einem "jungfräulichen" Excelsheet, wenn ich den Code in mein vorhandenes Blatt einfüge,
verschiebt auch dieser Code die Zeile immer an die gleiche Stelle und springt nicht 1 Zeile weiter.
Hänge meine Datei mal an.. Irgendwo muss der Hund doch begraben sein...  :-\

Gruß
Markus
Titel: Antw: VBA TIP -> nächste freie Zeile
Beitrag von: Beverly am November 12, 2012, 17:23:40 Nachmittag
Hi Markus,

das ist auch logisch, weil du ja keine Daten in Spalte A einfügst, in Spalte A aber die erste freie Zeile ermittelt wird. Ändere diese Zeile:

Zeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) + 1
Es muss dafür also Spalte B (2) und nicht A (1) benutzt werden.

Bis später,
Karin
Titel: Antw: VBA TIP -> nächste freie Zeile
Beitrag von: MDO75 am November 13, 2012, 12:42:03 Nachmittag
Hi Karin,

jetzt wo Du es schreibst....stimmt ist logisch :o :-[...

Vielen Dank für deine Mühe.

Gruß
Markus