Sheets("Sales data").Range(Cells(j, 1), Cells(j, 23)).Copy
In einem Modul stehend, kommt es dabei oft zu dem Laufzeitfehler 1004 (das ist so ein Allerwelts-Laufzeitfehler für alles mögliche).
Hier, kann es aus folgendem Grund passieren:
Schreibt man in einem Modul Range() bzw. Cells() - ohne sich dabei auf ein konkretes Tabellenblatt zu beziehen - dann wird automatisch das aktive Blatt hergenommen (was weder "Sales data" sein muss, noch muss es ein Tabellenblatt sein - Diagrammblätter gibt es nämlich auch noch). Man versucht dann also auf dem Blatt "Sales data" den Bereich des aktiven Blatts zu referenzieren - das würde bedeuten man referenziert Bereiche über Blätter hinweg; und das geht so einfach nicht.
Korrekt wäre:
Dim wksSales As Excel.Worksheet
Set wksSales = Worksheets("Sales data")
wksSales.Range(wksSales.Cells(j, 1), wksSales.Cells(j, 23)).Copy
oder per With-Statement:
With Worksheets("Sales data")
.Range(.Cells(j, 1), .Cells(j, 23)).Copy
End With
Beachte die Punkte vor Range() und Cells(). Damit beziehen sich diese auf das Tabellenblatt "Sales data".
PS: Wenn man im Code Tabellenblätter meint, sollte man Worksheets benutzen (selbsterklärender Code).
|