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
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
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
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:
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