Ich habe mit einem Macro komplette Arbeitsblätter als Backup kopiert und ausgeblendet.
Während der Session darf der User in Teilen der Originalblätter Eintragungen vornhemen. Da die Listen sehr groß sind, kann der User mit Autofilter und Formatierungen sich die für ihn wichtigen Einträge hervorheben.
Beim Verlassen der Mappe soll per Macro die Formatierung aus dem BackUp zurück kopiert werden.
Dies darf nur per PasteSpecial gehen, da es sein kann, dass sich Einträge geändert haben oder hinzu gekommen sind.
Den unten stehende Code habe ich zusammengebastelt. Die Testdatei hat 3 Blätter. Immer beim 1. Versuch bricht der Code mit der Meldung "PasteSpecial method of range class failed" auf Seite 1 ab. Starte ich ihn erneut funktioniert er bei der 1. Seite und steigt bei der 2. aus. Nach einem erneuter Neustart funktioniert es bei der 1., der 2. aber nicht bei der 3. Seite.
Ich habe auch schon mit dem Macro-Aufzeichner den Vorgang durchgemacht. Ich habe da aber keinen Unterschied gesehen. (?)
Kann mir jemand einen Tip geben, wonach ich suchen muss.
Kann es evtl. am aktivierten AutoFilter liegen?
Und gerne würde ich auch wissen, ob dies etwas professioneller geschrieben werden kann?
Viele Grüße
Gert
Sub mcr_FormatRestore()
Dim WSh As Worksheet
Dim EndColumnData As Long
' ActiveWorkbook.Unprotect (Worksheets("User").Range("C8"))
For Each WSh In ActiveWorkbook.Sheets
If Left(LCase(WSh.Name), 8) = "schedule" Then
EndColumnData =
ActiveWorkbook.Worksheets("bkp " & Right(WSh.Name, 4)). _
Cells(1,Columns.Count).End(xlToLeft).Column
Sheets("bkp " & Right(WSh.Name, 4)).Visible = True
Sheets("bkp " & Right(WSh.Name, 4)).Select
Range(Columns(1), Columns(EndColumnData)).Select
Selection.Copy
Sheets(WSh.Name).Select
' Sheets(WSh.Name).Unprotect (Worksheets("User").Range("C7"))
Range(Columns(1), Columns(EndColumnData)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:= False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End If
Next WSh
End Sub