Wie bekomme ich durch Makros eine Zelle in eine andere Tabelle verschoben?

1 Antwort

Aus meiner Sicht nur mit Makro, in etwa so:

Sub test2()
i = 1
While Tabelle1.Cells(i, 5).Value <> ""
If Tabelle1.Cells(i, 5).Value = "erledigt" Then
zeilemax = Tabelle2.Range("A:A").End(xlUp).Row + 1
Worksheets("Tabelle1").Rows(i).Copy Destination:=Worksheets("Tabelle2").Rows(zeilemax)
Worksheets("Tabelle1").Rows(i).Delete
End If
i = i + 1
Wend
End Sub

(Zeilenumbrüche musst Du noch glattziehen!).

In diesem Beispiel wird Spalte E in Tabelle 1 auf den Status erledigt geprüft. Kannst Du nach Belieben ändern.

Es bleibt noch die Frage nach dem Auslöser: Manuell, beim Speichern oder bei jeder Änderung prüfen.

Jessi1808 
Fragesteller
 23.10.2015, 12:49

Ich habe es versucht aber es klappt nicht :( entweder mache ich etwas Falsch oder ich mache etwas Falsch :D

Meine Schritte: Ich gehe oben auf Makros, dann erstelle ich eine neue Makros und habe dann deinen Text einfach mal eingefügt.. Namen und so habe ich umgeändert..
Dann speicher ich das ab und beim nächsten öffnen aktiviere ich dann die Makros.. Ich gebe erledigt ein, drücke Enter und es passiert nichts.. :D

Jetzt habe ich mir gedacht das ich das einfach Farbig mache.
Also: offen -> Rot, in Bearbeitung -> Gelb, erledigt -> Grün

Ich stelle dann alles auf "Bedingte Formatierungen" ein aber sobald ich dann z.B. erledigt hinschreibe wird es nicht Grün..
Ich hasse Excel :D

0
Ninombre  23.10.2015, 13:33
@Jessi1808

Nimm stattdessen mal Visual Basic. Da geht ein neues Fenster auf - links steht eine Art Baumstruktur mit VBAProject...

Für dann mal bei Tabelle1 (oder wo auch immer die Daten stehen, die kopiert werden sollen), diesen Code ein

Private Sub worksheet_change(ByVal Target As Range)
i = 1
While Tabelle1.Cells(i, 5).Value <> ""
If Tabelle1.Cells(i, 5).Value = "erledigt" Then
zeilemax = Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row + 1
Worksheets("Tabelle1").Rows(i).Copy Destination:=Worksheets("Tabelle2").Rows(zeilemax)
Worksheets("Tabelle1").Rows(i).Delete
End If
i = i + 1
Wend
End Sub

Das ist die Variante, die bei jeder Änderung in Tabelle 1 den Code automatisch durchläuft, d.h. sobald du den Status auf erledigt setzt, wird die Zeile kopiert und gelöscht. Wichtig: Die private Sub muss auf der Tabelle stehen, auf der die Änderungen überwacht werden sollen.

Beim Speichern musst Du aber statt dem üblichen XLSX mit XLSM speichern, sonst ist der Code wieder weg.

0