Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler beim Format-Kopieren (PasteSpecial)

Fehler beim Format-Kopieren (PasteSpecial)
pbaer007
Hallo ich noch einmal,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Fehler bei PasteSpecial. Referenzierung?
11.03.2012 07:28:45
Erich
Hi Gert,
fürs saubere Referenzieren spielt es eine Rolle, wo der Code steht, daher nur sicherheitshalber die Frage:
Steht der Code in einem "normalen" Modul oder im Modul z. B. eines Tabellenblatts?
Ob das Problem mit dem AutoFilter zu tun hat? Das könntest zunächst mal du selbst am besten austesten.
Du weißt, welche Blätter autogefiltert sein können.
Dass dein Code mal beim 1, mal beim 2. und mal erst beim 3. Blatt (was ist "Seite"?) abbricht,
finde ich erst einmal nur erstaunlich.
Priobier es mal mit diesem Code:

Option Explicit
Sub mcr_FormatRestore()
Dim WSh As Worksheet
Dim EndColumnData As Long
With ActiveWorkbook
'     .Unprotect Worksheets("User").Range("C8")
For Each WSh In .Worksheets
If Left(LCase(WSh.Name), 8) = "schedule" Then
With .Worksheets("bkp " & Right(WSh.Name, 4))
.Visible = True                  ' nur wenn gewünscht
EndColumnData = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Columns(1).Resize(, EndColumnData).Copy
End With
With WSh
'              .Unprotect Worksheets("User").Range("C7")
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Select                          ' nur wenn gewünscht
.Cells(1, 1).Select              ' nur wenn gewünscht
End With
End If
Next WSh
Application.CutCopyMode = False
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Immer noch: Fehler b. PasteSpecial. (überarbeitet)
12.03.2012 09:42:37
pbaer007
Hallo Erich,
Konnte mich leider nicht früher melden.
Danke für die Überarbeitung des Codes, sieht schon wesentlich "erwachsener" aus.
ABER LEIDER besteht das Problem weiterhin.
Ich habe nun darauf geachtet, dass es keine Filter-Einstellungen gibt, die Sheets unprotected sind und auch keine verbundenen Zellen gibt. Der Code befindet sich in einem normalen Module.
Die Fehlermeldung "PasteSpecial method of range class failed" kommt immer noch.
Ich habe die Schritte auch getrennt, also 1. Select Sheet, 2. Select Range (A:A), 3. PasteSpeciale
Evtl. hast Du ja noch einen weiteren Tip. Ich hab die Test-Datei mal hochgeladen.
https://www.herber.de/bbs/user/79338.xlsm
Auf alle Fälle schon einmal vielen Dank für die Überarbeitung des Codes.
Viele Grüße aus B
Gert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige