Im vorliegenden Fall sollte für eine Excel-Datei mit 50 Tabellen eine Kopfzeile mit Überschrift und Logo versehen werden. Was das Ganze etwas tricky gemacht hat, waren unterschiedliche Inhalte in der Kopfzeile pro Tabellenblatt. Die Lösung: durch VBA realisierte, dynamische Kopfzeile.
Als Basis verwende ich die Datei aus dem Beitrag Excel – Kopf-/Fußzeile mit Grafikmit dem eingebundenen Logo, aber keinen weiteren Informationen in Kopf-/undFußzeile
In VBA kann man die Kopfzeile über den Befehl „PageSetup“ ansprechen.
Die jeweils 3 Blöcke der Kopf-/und Fußzeile können dann über die Parameter
1 2 3 4 5 6 7 |
.LeftHeader = .CenterHeader = .RightHeader= bzw. .LeftFooter = .CenterFooter = .RightFooter= |
angesprochen werden.
Ok; Zeit das ganze mal umzusetzen.
Zuerst nehme ich in einem Tabellenblatt einen Bereich, den ich sicher nicht nutzen werde (der also ausserhalb des Druckbereiches liegt). In meinem Beispiel ist der nichtgenutzte Bereich ab Spalte M.
In Zelle M2 beginne ich mit der Beschreibung und in Zelle N2 steht dann der anzudruckende Text.
Jetzt muss der Text noch in die Kopfzeile gebracht werden.
Dazu öffne ich den VBA-Editor ([ALT]+[F11]), klicke doppelt auf „Tabelle 1“ und füge folgende Anweisung ein.
1 2 3 4 5 6 |
Private Sub dynkopf() With ActiveSheet.PageSetup .LeftHeader = Range("N2") End With End Sub |
Zu beachten ist jetzt, dass die Excel-Datei jetzt als „.xslm“ abgespeichert werden muss, damit die Makro-Funktionen erhalten bleiben. Dies wird, sollte es noch eine normale „.xslx“-Datei sein, auch als Hinweis ausgegeben.
Wird nach dem Speichern jetzt der Play-Button im VBA-Editor gedrückt
wird in der Kopfzeile im linken Feld der Text aus der Zelle N2 angegeben. Alle anderen Felder der Kopf-/Fußzeile bleiben von der Aktion aber ausgeschlossen, denn im VBA-Code wird explizit das Feld „.LeftHeader“ angesprochen.
Funktioniert. Nächster Schritt
Da es eine Überschrift ist, soll diese natürlich auch etwas auffälliger gestaltet werden. Meine Wahl fällt auf die Schriftgröße „24“ und die Schriftart „Arial“ in „Fettschrift“.
Den VBA-Code wird dementsprechend ergänzt
1 2 3 4 5 6 |
Private Sub dynkopf() With ActiveSheet.PageSetup .LeftHeader = "&""ARIAL,Fett""&24" & Range("N2") End With End Sub |
Und ergibt als Resultat
Passt:
Im nächsten Beitrag wird die Kopfzeile mehrzeilig.