Frage:
Was ist die maximale Makro-Länge bevor "Prozedur zu groß" kommt? Die Info im Microsoft-Support ist (wie fast immer) unbrauchbar und voll am Thema vorbei.
Die reine Zeilenanzahl scheint es nicht zu sein.
Und wieviel darf man maximal in ein Modul reinpacken (falls es da eine Grenze gibt)?
Hintergrundgeschichte: (nicht wirklich relevant bis auf den letzten Absatz)
Ich erstelle immer wieder per Makro eine Datei, wo ich auch die Kopfzeilen usw. per Makro erstelle (als Gerüst für weitere Einträge).
Einige Blätter sind immer komplett gleich (z.B. die Anleitung) und bisher habe ich sie aus bereits bestehenden Dateien rauskopiert. Weil ich dazu zu faul bin, will ich das auch per Makro machen. Allerdings nicht mit Blatt.Kopieren, weil die Quelldatei immer unterschiedliche Namen hat, sondern direkt per Makro.
Dazu hab ich bei einer vorhandenen Datei alle Zellen im UsedRange ausgelesen und zu Makro-Zeilen verarbeitet. Das sieht dann so aus:
Ausgabe.End(xlDown).Offset(1, 0) = "Range(" & """" & Replace(Hier.Address, "$", "") & """).Style = """ & sty & """"
Ausgabe.End(xlDown).Offset(1, 0) = "Range(" & """" & Replace(Hier.Address, "$", "") & """).FormulaR1C1 = """ & Inhalt & """"
Ausgabe.End(xlDown).Offset(1, 0) = "Range(" & """" & Replace(Hier.Address, "$", "") & """).Interior.Color = " & ZellFarbe
Ausgabe.End(xlDown).Offset(1, 0) = "Range(" & """" & Replace(Hier.Address, "$", "") & """).Font.Color = " & SchriftFarbe
Ausgabe.End(xlDown).Offset(1, 0) = "Range(" & """" & Replace(Hier.Address, "$", "") & """).Font.Bold = " & Schriftfette
Das Ergebnis wird in eine Excel-Spalte geschrieben und sieht so aus. Diesen Code kopier ich dann in ein Modul und lass ihn laufen, um in der neuen Datei dieses Tabellenblatt zu erstellen:
Range("B2").Style = "Normal"
Range("B2").FormulaR1C1 = "Blatt"
Range("B2").Interior.Color = -4142
Range("B2").Font.Color = 0
Range("B2").Font.Bold = True
Range("B2").Borders(xlEdgeLeft).Color = 0
Range("B2").Borders(xlEdgeRight).Color = 0
Da es ca. 10.000 Zellen sind, die so erstellt werden, ist das Makro sehr lang und ich krieg die Meldung "Prozedur zu groß".
Mit ein wenig rumprobieren habe ich rausgefunden, dass ich das Makro in Teilmakros aufteilen kann, die sich dann der Reihe nach gegenseitig aufrufen.
Zuerst schien eine maximale Länge von 900 Zeilen in Ordnung zu sein. Dann aber plötzlich nicht mehr bei allen Teilmakros ("Prozedur zu groß"). Bei 850 Zeilen gab es zwischendrin auch Probleme, aber nicht bei allen Teilmakros (?!). Nachdem ich die maximale Zeilenzahl auf 500 runtergestellt habe, laufen alle Teilmakros durch.
Andererseits habe ich in meiner Werkzeugkiste Makros, die 1.500 Zeilen lang sind und problemlos laufen.