Code säubern und aufräumen sollte der erste Schritt sein.
1) With-Blöcke richtig stellen.
1 2 3 4 | With Worksheets( "BerichtMonat" )
Range( "a1:z5000" ).Interior.Color = vbWhite
Range( "a1:z5000" ).Borders.LineStyle = -4142
|
Die Range bezieht sich hier nicht zwingend auf das Blatt "BerichtMonat" -> Vor Range gehört ein Punkt.
Dieses Problem hast du an mehreren Stellen in deinem Makro.
2) Wozu die Sprungmarke nach oben?
Das nachträgliche Anpassen von Variable n ist auch verwirrend und mit Sicherheit auch nicht erforderlich, wenn sauber gelöst.
So etwas erschwert nicht nur das Debugging, es ist auch eine potentielle Fehlerquelle -> Problem anders lösen.
3)
1 | ActiveSheet.PageSetup.PrintArea = "a1:j" & n + 1
|
Warum verwendest du ActiveSheet? Du solltest doch wissen welchen Sheet du gerade ansprichst/ausdrucken möchtest; also sprich dieses Blatt auch explizit an.
1 2 | Columns( "C:C" ). Select
Selection.EntireColumn.Hidden = True
|
In 99,9% der Fälle gehört das Select da nicht hin.
Schreibe
1 | Worksheet( "BerichtMonat" ).Columns( "C:C" ).EntireColumn.Hidden = True
|
oder verwende für das Blatt eine lokale Variable.
Grüße
|