Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

autom.Verschieben von Zeilen in ein anderes Tabellenblatt





Frage

Hallo, ich habe eine Frage in Excel. Wenn jemand die Antwort für das Problem kennt, erklärt es bitte für einen richtigen Laien. Ich kenne mich mit Makros und Programmierungen wirklich gar nicht aus. Ich möchte, dass bestimmte Zeilen aus Tabelle 1 automatisch in die erste freie Zeile von Tabelle 2 verschoben werden (aktuelle Probleme in erledigte Probleme), wenn man z.B. in Spalte K eine Checkbox abhakt bzw. einfach nur einen Buchstaben wie "j" hinein schreibt (letzteres würde vollkommen reichen). Dabei soll die Zeile in Tabelle 1 natürlich gelöscht werden, damit dort keine Lücken enstehen. Vielen Dank für Eure Hilfe

Antwort 1 von Dude147

Hallo,

habe die Antwort auf meine Frage an anderer Stelle gefunden. Ich benutze jetzt diesen Code:
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range 
Dim lRow, zRow As Long 

lRow = Sheets("Tabelle1").Range("A65536").End(xlUp).Row 
zRow = Sheets("Tabelle2").Range("A65536").End(xlUp).Row + 1 

Set Bereich = Range("E5:E" & lRow) '*** hier eintragen wo das Datum steht 

If Not Intersect(Target, Bereich) Is Nothing Then 
    If IsDate(Target.Value) = True And Target.Value <> "" Then 
     
    With Range("B" & Target.Row & ":E" & Target.Row) '*** hier eintragen was kopiert werden soll 
    .Copy 
     
    Sheets("Tabelle2").Paste Destination:=Sheets("Tabelle2").Range("B" & zRow) 
        If IsNumeric(Sheets("Tabelle2").Range("A" & zRow - 1)) = True Then 
            Sheets("Tabelle2").Range("A" & zRow) = Sheets("Tabelle2").Range("A" & zRow).Offset(-1, 0) + 1 
        Else 
            Sheets("Tabelle2").Range("A" & zRow) = 1 
        End If 
Application.EnableEvents = False 
    .Delete shift:=xlShiftUp 
    Sheets("Tabelle1").Range("A" & lRow).Value = "" 
    End With 
    End If 
End If 

Application.EnableEvents = True 
End Sub 

von der Seite: http://www.digital-inn.de/excel-und-vba/35722-tabellenzeile-automat...

Jetzt kommt bei mir eine neue Frage auf: Falls eine Zeile versehentlich verschoben wird, wie kann man dies dann möglichst einfach rückgängig machen. Dabei stellt sich eine weitere Frage. In Tabelle 1 steht in Spalte A eine laufende Nummer. Wenn die Zeilen in Tabelle 2 verschoben werden, werden sie in die erste freie Zeile verschoben (lfd. Nummern dürfen durcheinander sein). Beim rückgängig machen der Verschiebung (also zurück in Tabelle1) sollte die Zeile aber wieder an der richtigen Stelle eingefügt werden, so dass die lfd. Nummern wieder stimmen.

Vielen Dank für Eure Hilfe

Antworten auch gerne an arndt.breuer[at]gmx.de

Antwort 2 von Dude147

Ups, der Code war ein anderer:
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range 
Dim lRow, zRow As Long 

lRow = Sheets("Tabelle1").Range("A65536").End(xlUp).Row 
zRow = Sheets("Tabelle2").Range("A65536").End(xlUp).Row + 1 

Set Bereich = Range("E5:E" & lRow) '*** hier eintragen wo das Datum steht 

If Not Intersect(Target, Bereich) Is Nothing Then 
    If IsDate(Target.Value) = True And Target.Value <> "" Then 
     
    With Range("A" & Target.Row & ":E" & Target.Row) '*** hier eintragen was kopiert werden soll 
    .Copy 
     
    Sheets("Tabelle2").Paste Destination:=Sheets("Tabelle2").Range("A" & zRow) 
Application.EnableEvents = False 
    .Delete shift:=xlShiftUp 
    End With 
    End If 
End If 

Application.EnableEvents = True 
End Sub