Kopiermakro erzeugt 'langsames' Tabellenblatt

Hallo Experten,
irgendetwas stimmt nicht mit dem Blatt neueTab, in das ich per untenstehendem Makro Zellenbereiche aus den beiden anderen Blättern hineinkopiert habe: Es ist sehr langsam im Bildaufbau beim Benutzen der Pfeil- und Bildlauftasten.
Zugegebenermaßen ist die Datei recht groß ( 13600 Zeilen x 115 Spalten ). Aber die beiden Rechenblätter, aus denen die Quelldaten stammen, befinden sich in der gleichen Datei und haben nicht diese „Langsamkeit“.
Hat Jemand eine Idee, was da geschehen ist bzw. geschieht?
Freundliche Grüße
Thomas

Sub importieren()
’ importieren Makro
’ aktuelle Daten aus WIAS neueTab, Spalten 1-92, ca. 14.000 Zeilen
’ sollen mit bestehenden Daten, Klassifizierungen und Logiken
’ verknüpft werden, die in Tabelle import in den Spalten 93 bis 130 artikelbezogen
’ abgelegt sind

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Application.DisplayAlerts = False

'Randbedingungen feststellen
Sheets(„import“).Select
lr_imp = ActiveCell.SpecialCells(xlLastCell).Row
lc_imp = ActiveCell.SpecialCells(xlLastCell).Column
Sheets(„alteTab“).Select
lr_alt = ActiveCell.SpecialCells(xlLastCell).Row
lc_alt = ActiveCell.SpecialCells(xlLastCell).Column
Application.CutCopyMode = False
zeile_alt = 9
Sheets(„neueTab“).Select

For i = 9 To lr_imp 'alle importierten Zeilen
artikel_imp = Worksheets(„import“).Cells(i, 1) * 1 'aktueller importierter Artikel
artikel_alt = Worksheets(„alteTab“).Cells(zeile_alt, 1) * 1

With Worksheets(„import“) 'linke Seite kopieren
.Range(.Cells(i, 1), .Cells(i, 92)).Copy Destination:=Worksheets(„neueTab“).Cells(i, 1)
End With

Richtung = „“
Schleife:
artikel_alt = Worksheets(„alteTab“).Cells(zeile_alt, 1) * 1
If (artikel_alt = artikel_imp) Then 'rechte Seite kopieren
With Worksheets(„alteTab“)
.Range(.Cells(zeile_alt, 93), .Cells(zeile_alt, 130)).Copy Destination:=Worksheets(„neueTab“).Cells(i, 93)
End With
zeile_alt = zeile_alt + 1
End If

If (artikel_alt artikel_imp) Then
If Richtung = „kleiner“ Then GoTo SchleifenEnde

Let zeile_alt = zeile_alt - 1
Richtung = „größer“
GoTo Schleife
End If
SchleifenEnde:

Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'Application.DisplayAlerts = true
End Sub

Hallo

Es ist je nach Prozessor einfach ein Unterschied, ob ich ein Blatt mit 13600 Zeilen x 115 Spalten voller Zahlen habe, oder ein Blatt mit 13600 Zeilen x 115 Spalten voller Dateiverweise bzw. Formeln.

Gruß
smalbop

war doch klar
Hallo smalbop,
das war mir schon klar. Deshalb auch mein Hinweis auf die beiden anderen Blätter mit gleichem Inhalt. Doch woher sollten denn plötzlich die zusätzlichen Verweise und Formeln entstehen? Ich kopiere doch nur die Zelleninhalte.
Tatsächlich findet man auch keine sichtbaren Unterschiede in den Blättern.
Freundliche Grüße
Thomas

irgendetwas stimmt nicht mit dem Blatt neueTab, in das ich per
untenstehendem Makro Zellenbereiche aus den beiden anderen
Blättern hineinkopiert habe: Es ist sehr langsam im Bildaufbau
beim Benutzen der Pfeil- und Bildlauftasten.

hallo falken,

ist das Makro von dir entwickelt? Dann biste m.E. fit genug um die Selects, die Gotos rauszuwerfen.
Auch das Let, das benutzt man nur in anderen Fällen.

Okay, zum Thema, du kopierst daten von ein zwei Dateien eine dritte und die ist irgendwie „langsamer“.
Vielleicht hat die dritte Datei/mappe „Altlasten“, verschieb sie in ein anderes Verzeichnis und probiere es mit einer neuen leeren Mappe nochmal.
Gleiches Verhalten?

Gruß
Reinhard

Moin Reinhard,
ja, das habe ich - mit u. A. Deiner Hilfe - so geschrieben.
Insbesondere die SELECTs aus dem geschwindigkeitsrelevanten Teil eliminiert.
Es hat tatsächlich fast auf Anhieb funktioniert - bis auf die beschriebene Macke.
O.K., das LET gehört da nicht hin, da habe ich wohl gerade ans Squash-spielen gedacht :wink:
Die verbliebenen SELECTs kann ich irgendwann auch wegzaubern. Sie wirken sich aber wohl nicht sehr nachteilig aus.
Das GOTO habe ich ´reingeschrieben, weil mir die Schleifen in VBA nicht so geläufig sind, insbesondere die Ausstiegsbefehle. Wie Du sicherlich bemerkt hast, wird die Laufvariable ZEILE_ALT immer mit dem momentanen Wert „i“ gestartet, damit sie nicht jedesmal von 9 bis „LastRow“ laufen muss. Wenn Du mir die geeignete Schleifenkonstruktion nennen könntest, kriege ich es vielleicht auch ohne GOTO hin.
Aber zurück zum eigentlichen Problem.
Dieser von mir geschriebene Satz wird irgendwie ignoriert. Dabei ist er wirklich so gemeint:

"…Aber die beiden Rechenblätter, aus denen die Quelldaten stammen,
befinden sich in der gleichen Datei und haben nicht
diese „Langsamkeit“…

Natürlich habe ich schon mehrfach das Blatt „neueTab“ gelöscht und dann ein neues Blatt mit gleichem Namen erstellt. Das Makro verrichtet seinen Dienst und wieder habe ich
1 Datei
mit 3 Blättern
wovon 1 sehr langsam auf jegliche Scroll-Anforderungen reagiert während die anderen beiden normal funktionieren.
Wie gesagt, beim normalen Betrachten der einzelnen Zellen kann ich keine Unterschiede feststellen zwischen dem Tabellenblatt „alteTab“ und dem Tabellenblatt „neueTab“.
Das ist jetzt kein so akutes Problem - ich kann damit leben bzw. arbeiten. Aber schon irgendwie komisch, oder?
Besten Dank für die bisherigen Tips und freundliche Grüße
Thomas