Im vorherigen Teil habe ich, durch kopieren des ersten Tabellenblattes, auch den VBA-Code mitkopiert. Das funktioniert zwar, aber bei Änderungen am Code, müsste dieser in jeder Tabelle angepasst werden. Da dies bei vielen Tabellenblättern umständlich ist, gibt es hier eine kleine „Optimierung“ des VBA-Codes.
Ich erzeuge zuerst ein Modul,
dann kopiere ich den vorhandenen VBA-Code der Tabellen dort hinein und ändere „Private Sub ..“ in „Public Sub…“.
1 2 3 4 5 6 7 8 |
Public Sub dynkopf() With ActiveSheet.PageSetup .LeftHeader = "&""ARIAL,Fett""&24" & Range("N2") & Chr(10) & _ "&""ARIAL,Fett Kursiv""&12" & Range("N3") & Chr(10) & _ "&""ARIAL,Normal""&8" & Range("N4") & Chr(10) & Range("N5") End With End Sub |
In den Tabellen ersetze ich den alten VBA-Code gegen einen Neuen, welchen nun den die Public Sub „dynkopf“ aus Modul 1 aufruft.
1 2 3 |
Private Sub Worksheet_Activate() Call dynkopf End Sub |
Jedes Mal, wenn eine Tabelle geöffnet oder angewählt wird, ruft man nun die Routine „dynkopf“ auf.
Damit war mein Problem gelöst und ich konnte so für 50 Tabellen einfach die jeweilige Kopfzeile dynamisch erzeugen.
Eine Überraschung gab es dann aber doch noch, denn jetzt sollte zusätzlich über dem Logo noch ein weiterer Text angegeben werden.
Dazu mehr im nächsten (und letzten) Teil.