VBA Zeilen in eine anderes Sheet verschieben
#1
Hallo Zusammen,

ich versuche gerade eine Excel Tabelle zu erstellen, allerdings scheitere ich an den besonderheiten der Tabelle.

Ich habe eine Mappe mit 4 Blättern.

die ersten 3 Blätter sind immer gleich aufgebaut...eine Zeile enthält alle wichtigen Daten für ein Element

Jetzt möchte ich gern, dass wenn ich in SPALTE B (Blätter 1-3) ein "X" eintrage, die jeweilige Zeile in das Blatt 4 (Stillgelegt) übertragen und aus dem ursprünglichen Blatt gelöscht wird, also ausschneiden und einfügen. das Schaffe ich auch, allerdings, wenn ich ein zweites "X" setze, ein paar Zeilen tiefer oder in einem anderen Blatt , dann wird der Eintrag in Blatt 4 (Stillgelegt) überschrieben. Und ich möchte gern, dass alle Werte untereinander eingefügt werden. Zusätzlich hätte ich gern eine Möglichkeit das wieder Rückgängig zumachen, falls man in der Zeile verrutscht ist, das funktioniert zur Zeit gar nicht, auch nicht mit dem "zurück" Button.


Zitat:Private Sub Worksheet_Change (ByVal Target As Range)
   Dim lngErste As Long
   If Target.Column = 2 Then
       If Target.Count = 1 Then
           If UCase(Target) = "X" Then
               With Worksheets("Stillgelegt")
                   lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
                       .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
                   Rows(Target.Row).Copy
                   .Cells(lngErste, 1).PasteSpecial Paste:=xlValues
                   Rows(Target.Row).Delete shift:=xlUp
               End With
           End If
       End If
   End If
End Sub

Diese Bedingung habe ich auch nur aus Videos und Foreneinträgen zusammengetragen, da meine VBA Kenntnisse doch sehr rudimentär sind.

Falls ich mich halbwegs verständlich ausgedrückt habe und mir jemand helfen kann, wäre ich sehr dankbar.
Top
#2
Hallöchen,

die Untersuchung, ob in Zeile 1 was steht, finde ich immer prickelnd. Schreibe einfach oben eine Überschrift drüber, dann brauchst Du die nicht. Ansonsten schleppt man diese Prüfung jahrzehntelang bei jeder Änderung mit sich rum …

Im Prinzip sollte so etwas reichen:


Rows(Target.Row).Copy
.Cells(.Rows.Count, 1).End(xlUp).Offset(1,0).PasteSpecial Paste:=xlValues
...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo

da ist ja ein Teil der Aufgabe ungelöst, der "zurück" Button bei Fehleingabe. Wo befindet sich der Button??  In jedem der drei Blaetter ein Button? Und woher weiss man welche Zeile du ausgeschnitten hast? Man kann sie höchstens in die drei Tabellen wieder ans Ende stellen. Oder müsste in einer Zelle die Zeile notieren. Sollte der "zurück" Button in Sheet "Stillgelegt" sein, müsstest du auch in eine Zelle notieren aus welchem Blatt diese Zeile kommt!

mfg Gast 123
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste