AW: nicht gesperrte Zellen kopieren
24.04.2020 10:45:43
Gode
Hallo Gerd,
ich habe deinen Code mal eben an einem kleinen Bsp. getestet (ein End IF noch ergänzt) und sie macht im Prinzip das Gewünschte (obwohl ich den Code ehrlich gesagt nicht zu 100% verstehe (U.Areas)).
Das könnte ich aber entsprechend adaptieren ;-)
Mir geht es nur drum, ob dieser Code letztlich auch (merklich) schneller ist als der bestehende. Daher mal im Folgenden den Original-Code, wie ihn irgendjemand vor Urzeiten mal so geschrieben hat:
For Each w In ws_alt.Worksheets
If w.Name Like "K*" And w.Name "K xx" Then
z_min = 1
z_max = 57
s_min = 1
s_max = 25
For z = z_min To z_max
For s = s_min To s_max
If Not ws_neu.Sheets(w.Name).Cells(z, s).Locked Then Call Getdaten(ws_alt, _
ws_neu, w.Name, z, s)
Next s
Next z
End If
In die Prozedur "Getdaten" erfolgt dann die Zuweisung des Zellwertes von der Mappe ws_alt in die Zelle der Mappe ws_neu (sofern es sich nicht um eine Formel handelt):
Sub Getdaten(xWBAlt As Workbook, xWBNeu As Workbook, xWSName As String, xZeile As Integer, _
xSpalte As Integer)
If Not xWBAlt.Sheets(xWSName).Cells(xZeile, xSpalte).HasFormula Then
xWBNeu.Sheets(xWSName).Cells(xZeile, xSpalte).Value = xWBAlt.Sheets(xWSName).Cells( _
xZeile, xSpalte).Value
End If
End Sub
Mir ist schon klar, dass dein Code wesentlich schöner und weniger umständlich ist ... nur bringt er auch merklich Performance-Einsparung mit ?
Letztlich wird doch in beiden Varianten Zelle für Zelle im verwendeten Bereich durchgegangen?
Wie schon gesagt, eine Mappe kann im Extremfall bis zu 50-60 K-Blätter enthalten.
Darüberhinaus gibt es noch Blätter mit L* und P* die ebenfalls nach obigem Schema verarbeitet werden (allerdings wesentlcih kleinere Bereiche beinhalten und daher aus meiner Sicht nicht ganz so kritisch sind).
Gode