Zeilen in das nächste Tabellenblatt kopieren

Bild

Betrifft: Zeilen in das nächste Tabellenblatt kopieren
von: Rudi
Geschrieben am: 21.11.2015 11:21:38

Hallo,
ich habe ein kleines Problem:
Und zwar habe ich in Tabelle 1 eine Liste, bestimmte Einträge dieser Liste will ich in Tabelle2 kopieren. Diese zukopierenden Einträge wähle ich aus in dem ich in Tabelle1 Spalte A ein Doppelklick mache und ein "X" eingefügt wird.
Dank Google konnte ich folgende Excel Datei finden mit dem Code der eigentlich meinem Vorhaben entspricht: https://www.herber.de/bbs/user/101690.xls.
Da meine Listen etwas anders aussehen, habe ich den Code bearbeitet und auf meine Situation angepasst, allerdinges gibt es ein Problem:
Wenn ich die ersten 5 Einträge mit einem "X" markiere, dann übernimmt er auch alle Einträge in Tabelle2, mach ich dann in Tabelle1 das "X" bei den Einträge 2-4 wieder weg, wir die Änderungen auch wirksam und er löscht die Einträge aus Tabelle 2, wenn ich allerdings bei dem ersten Eintrag das "X" wegnehme und bei den anderen die "X" lasse, dann löscht er in Tabelle2 nicht den Eintrag. Der Eintrag wird erst dann gelöscht wenn alle Einträge aus Tabelle1 ent"X" sind. Schaut am besten mal selbst:
https://www.herber.de/bbs/user/101691.xlsm
Der Codeschnipsel der in dem Bereich im Tabellenblatt2 den Inhalt löschen soll funktioniert, da auch die Formatierung in dem Bereich gelöscht wird.
Was muss am Code verändert werden? In der Beispiel Datei funktioniert das einwandfrei.
Vielen Dank für eure Hilfe

Bild

Betrifft: AW: Zeilen in das nächste Tabellenblatt kopieren
von: Heide
Geschrieben am: 21.11.2015 13:24:11
hallo Rudi,
mit jeder Änderung in Tabelle1 werden:
- die Daten dort gefiltert
- die Daten in Tabelle2 gelöscht
- alle mit "x" in Tabelle2 kopiert.
Ein Filter sitzt in der Zeile der Überschrift, die gefilterten (zu kopierenden) Daten beginnen in der darauf folgenden Zeile.
Daher muss Dein Filter in Zeile 5 liegen. Das bedeutet für Deinen Code:
With Range("A5", Cells(Rows.Count, 1).End(xlUp))
Unklar ist mir, warum Du das Ergebnis in Tabelle2 in Zeile 29 kopierst - denn Deine Rahmen beginnen ja in Zeile 33):
VisibleBereich.Copy .Range("A29")
aber das war nicht Deine Frage und spielt für deren Beantwortung auch keine Rolle...
viele Grüße. Heide

Bild

Betrifft: AW: Zeilen in das nächste Tabellenblatt kopieren
von: Rudi
Geschrieben am: 21.11.2015 13:36:59
Hallo Heide,
Danke für deine Antwort.
Wenn ich die Filter beginn auf A5 setze und alle Werte in Tabelle1 mit "X" versehe kopiert er alles brav, lösche ich dann alle "X" wieder kopiert er in Zeile A29 die Überschriften von Tabelle 1... :(
Die Ergebnisse sollen bei A29 beginnen, die Rahmen werden nur immer gelöscht bei jeder Änderung, ich denke wegen der .clear-Funktion?! Die Rahmen in Tabelle2 können eh gelöscht werden die werden ja wenn die Liste in Tabelle1 Rahmen bekommt mit kopiert.

Bild

Betrifft: AW: Zeilen in das nächste Tabellenblatt kopieren
von: Heide
Geschrieben am: 21.11.2015 17:05:59
hallo Rudi,
sorry für die späte Antwort.
so genau weiß ich auch nicht, woran es liegt. Wenn man das ScreenUpdating nicht ausschaltet sieht man, dass das alte Excel (xls) völlig anders filtert. Die Filter liegen in Zeile a und damit sind auch die Überschriften der Beispieldatei nach dem Filtern ausgeblendet. Das passiert bei xlsx nicht: der Filter liegt bei Dir ordentlich in Zeile 5. Der sichtbare Bereich wird mit A6:D5 abgefragt und damit bleiben die Überschriften tatsächlich "übrig".
Vielleicht findet sich einer, der die genau Ursache kennt und hat dann auch eine bessere Lösung. Aber Du kannst Dein Ziel in jedem Fall damit erreichen, dass Du die Erzeugung des Objekts VisibleBereich davon abhängig machst, ob es überhaupt noch Daten gibt. D.h. ob nach dem Filtern die letzte beschriebene Zeile in Spalte A größer 5 ist (in 5 stehen Deine Überschriften).
die Codezeile müsste also so aussehen:
If Range("A65536").End(xlUp).Row > 5 Then Set VisibleBereich = Range("A6:D" & .Cells(.Cells.Count).Row).SpecialCells(xlCellTypeVisible)
Wird das Objekt VisibleBereich nicht erzeugt, ist es nothing und somit wird im anschließenden Code (If Not VisibleBereich Is Nothing Then) auch nichts kopiert.
viele Grüße. Heide

Bild

Betrifft: AW: Zeilen in das nächste Tabellenblatt kopieren
von: Rudi
Geschrieben am: 21.11.2015 17:25:13
Hallo,
erneut ein Dank für deine Antwort.
Vielleicht liegt es ja an der FilterFunktion die im Code genutzt wird....das man für "neuere" Versionen besser eine andere Funktion nimmt (?)
Naja vielleicht schreibt ja noch jemend etwas zu dem Problem, ansonsten hast du mir mit deiner alternativen Lösung sehr geholfen, so geht es ja auch und warum dann nicht so machen? ;)
Vielen Dank erstmal.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen in das nächste Tabellenblatt kopieren"