Moin josef24,
wie Yaslaw schon andeutete - deine Exceltabelle enthält sehr, sehr viel unnötigen Ballast.
Die Zeilen der Quelltabelle enthalten unendlich viele (identische) bedingte Formatierungen, die
a) wahrscheinlich auch durch Copy & Paste von Zeilen entstanden sind
b) zum Teil wirkungslos sind, weil die ganze Formelbedingung in Hochkommata steht
c) zu allem Überfluss auch noch volatile Funktionen wie JETZT() und DATUM() angegeben sind
-> deshalb werden werden zum Anzeigen von ein paar doofen Dutzend Zeilen grob geschätzt 58000 Formeln neu berechnet, nur um irgendein Feld mit grünem Hintergrund anzuzeigen, falls da "SZ" drinsteht.
Wie dem auch sei: wenn du eine passende Zeile in der Quelltabelle um Kopieren findest, dann kopierst du, weil es sich wohl schneller tippen liess, die komplette Zeile ("Rows(i).Copy" ) auf eine andere Row als Destination.
Und beim Kopieren wird nun auch wieder ALLES kopiert... die maximal 6 Werte, die tatsächlich drinstehen, und die Formate und die Rahmen und die Spaltenbreite und und und... und eben auch auch die 587 bedingten Formatierungen, die an der Quellzeile dranhängen.
Abhilfe in mehreren Schritten:
FALLS du die Daten wirklich nur in DIESER Exceltabelle hast, dann musst du diese Excel reparieren.
(Wenn du die Daten noch irgendwo anders hast, erstelle eine neue Tabelle von Anfang an, geht schneller!)
Reparatur: entweder die Quelltabelle im gewünschten Ausmass markieren, Strg+C und (in einer neuen Datei) in ein neues Excelsheet "Inhalte einfügen" -> "Nur Werte"
In der neu erzeugten Kopie einmalig die Bedingte Formatierung RICHTIG eingeben, also so, dass keine bedingte Formatierung je Zelle doppelt, 12fach, 587fach ist.
Wenn das getan ist, dann kannst du diese Quelltabelle komplett markieren, Strg+C und in das vorgesehene Ziel-Blatt für deine spätere Kopiererei pasten (in deinem Beispiel in die "Tabelle2"). Hier "Inhalte einfügen" ->"Formate".
Wenn du dann eine saubere Excel-Datei mit allen relevanten Daten hast, dann schließe die alte Datei (die jetzt in Data 2.zip ist) und jag die durch den Schredder, schenk sie der Schwiegermutti oder leg sie in die Schrottpresse.
Also die Datei, mein ich.
Danach kannst du wieder mit dem Makro weitermachen und dort:
a) erstmal dir eine Bedingung überlegen, mit der du wirklich nur die relevanten Zeilen findest.
Momentan erfüllen ALLE Zeilen deiner Quelltabelle die Bedingung inklusive der Überschriftszeile. Das soll bestimmt nicht sein.
b) Und dann kopie nicht komplette Rows mit allem Gedöns, sondern Ranges.
Ein Range-Object hat u.a. den Charme, dass du alles kopieren kannst, aber - ähnlich wie oben beim "Inhalte einfügen" bestimmen kannst, was gepasted werden soll.
Dann bau doch den Code ein bissel um für ein Range-Object
Code:
...
<deklarieren>
Dim wks2 As Worksheet
Set wks2 = Worksheets("Tabelle2") ' Ziel-Worksheet
...
<vorbereiten>
With Workksheet(Tabelle1")
For i = LBound().....
if <vernünftige Bedingung> then
.Rows(i).Copy ' wenn es denn partout die gesamte Zeile sein soll
wks2.Cells(a, 1).PasteSpecial Paste:=xlPasteValues ' nur die Werte kopieren, Bedingte Formatierung ist schon da!
a = a + 1
End If
next i
end with
...
<aufräumen>
Is' sich jetzt ungetestete Skizze, da ich nun auch kein Coder bin.
Bei den Feinheiten kann dir Yaslaw besser helfen.
Grüße
Biber