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