Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel: Verschieben einer kompletten Zeile von einem Blatt in ein anderes Tabellenblatt





Frage

Bin gerade an einer Aufgabenverwaltung in Excel: Dabei habe ich folgendes Problem: Sobald der Status einer Aufgabe auf "erledigt" gesetzt wird, soll die komplette Zeile in ein anderes Blatt verschoben werden. Habe mir ein VB-Script dafür runtergeladen. Allerdings funktioniert das nicht: Sub makro01() GoSub lz lz1 = lzeile For t% = 1 To lz1 Rem hier anstatt des pluszeichens dein zeichen bzw. haeckchen(was es nicht gibt) setzen Rem spalte c wird zur zeit durchsucht,deinen wuenschen anzupassen (es ist die spalte des haeckchens anzugeben). If Range("J" & t%) = "erledigt" Then Range(t% & ":" & t%).Select Selection.Copy Sheets("erledigte Projekte").Select GoSub lz lzeile = lzeile + 1 Range(lzeile & ":" & lzeile).Select ActiveSheet.Paste Range("A" & t%).Select Sheets("Aufgabenverwaltung Abt. BO").Select Range(t% & ":" & t%).Select Selection.Delete Shift:=xlUp Range("A" & t%).Select End If Next t% End lz: Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell) alta = LastCell.Row a = LastCell.Row Do While Application.CountA(Rows(a)) = 0 And a <> 1 a = a - 1 Loop alta = a altb = LastCell.Column b = LastCell.Column Do While Application.CountA(Columns(b)) = 0 And b <> 1 b = b - 1 Loop altb = b lzeile = alta lspalte = altb Return End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) End Sub Wer kann mir helfen? Ich könnte auch euch die Datei zumailen... Hab das Script im VB-Editor unter Allgemein eingegeben... Für schnelle Hilfe wäre ich echt dankbar Gruß Carsten

Antwort 1 von JoeKe

Hallo Carsten,

versuch es mal hiermit:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ZielZeile As Long
ZielZeile = Sheets("erledigte Projekte").Cells(Rows.Count, 1).End(xlUp)
Set Target = Intersect(Target, Range("J1:J1000"))
If Target Is Nothing Then Exit Sub
If Target = "erledigt" Then
Target.EntireRow.Copy Destination:=Sheets("erledigte Projekte").Cells(ZielZeile + 1, 1)
Target.EntireRow.Delete
End If
End Sub


Den Code musst in das VBA-Projekt des Tabellenblattes aus dem die Zeilen verschoben werden sollen. Um dorthin zu gelangen, klickst du mit rechts auf den Tabellenreiter des Blattes und wählst dort "Code anzeigen". In den sich darauf öffnenden Codefenster kopierst du den Code hinein. Abschließend die VBA Umgebung schließen.
Wenn du nun in eine Zelle der Spalte J "erledigt" schreibst, wird die komplette Zeile auf das Blatt "erledigte Projekte" kopiert und die Zeile auf dem Blatt "Aufgabenverwaltung Abt. BO" gelöscht.


MfG

JöKe

Antwort 2 von gaucho1982

Hi,

leider funktioniert das so auch nicht. Kann ich dir vielleicht die Datei mal zukommen lassen? Meine eMail-Adresse lautet: carsten_gauch [at] gmx.de

Würde mich freuen, wenn du mir ne Mail schickst, dann hab ich deine Adresse und kann dir dann die Excel-Datei einmal schicken...

Danke schonmal im Voraus!!!!

Gruß

Carsten

Antwort 3 von JoeKe

Hallo,

sieh mal in deinen Pager!

MfG

JöKe

Antwort 4 von gaucho1982

Hallo zusammen,

mit folgendem Code funktioniert es jetzt. Allerdings nicht unter Excel 97. Hat jemand eine Idee, wie ich es auch unter Excel 97 zum laufen bringen kann?

Sobald der Status einer Aufgabe (in der Aufgabenverwaltung) auf "erledigt" gesetzt wird, soll die komplette Zeile in ein anderes Blatt verschoben werden.

Hier der VB-Code:

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