Hi Erich,
auf den ersten Blick kann ich keinen Fehler in deinem Code finden, auch wenn ich ihn ein wenig anders aufbauen würde.
Hast du mal geprüft, ob deine Sheetnamen den gültigen Regeln entsprechen? Der Name darf nicht länger als 31 Zeichen sein, darf keines der Sonderzeichen : \ / ? * [ oder ] enthalten und der Name darf nicht bereits an ein anderes Sheet vergeben worden sein.
In diesen Fällen wird der neue Name nicht vegeben und es bleibt bei Sheet14. Somit kannst du im nächsten Schritt auch nicht auf ein Sheet mit diesem Namen zugreifen. Aber da müsstest du eigentlich den Laufzeitfehler 1004 bereits bei .Name = rNewSheetName.Value mit entsprechender Beschreibung erhalten.
Wenn es trotzdem zu Fehlern kommt, könnte es vielleicht sein, dass er während das Masterworkbook im Copymodus ist, nicht nochmal für Destination das Masterworkbook neu auslesen kann. (Nur eine Theorie). Wie gesagt würde ich den Code daher etwas anders aufbauen. Probiers mal mit folgendem Code (ungetestet)
Sub SheetCopyTest()
Dim wbMasterWorkbook As Workbook, rng As Range, c As Range
Set wbMasterWorkbook = Workbooks("Master Workbook")
With Workbooks("VBA Codes").Sheets("Helper")
Set rng = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown))
End With
For Each c In rng
With wbMasterWorkook.Sheets.Add(Before:=wbMasterWorkbook.Sheets("My Sheet"))
.Name = Left(c.Value, 31) 'Die Sonderzeichen : \ / ? * [ ] sind verboten
.Parent.Sheets("Template").Range("A:BD").Copy Destination:=.Range("A1")
End With
Next c
End Sub
Gruß Mr. K.
|