Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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)
Antworten 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
Antworten Top


Gehe zu:


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