AW: ich kann ja nur mein Bsp testen ...
21.12.2013 10:49:24
fcs
Hallo Thomas,
eigentlich gehört der Code in ein allgemeines Modul.
Er sollte auch unter DieseArbeitsmappe funktionieren.
Unter "Tabelle4" kann es Probleme geben, da du im Code mit Range -ohne Angabe des zugehörigen Blatts- arbeitest. Das Makro holt dann die Informationen immer aus den Zellen dieses Blattes, unabhängig davon welches Blatt das aktive Blatt ist.
Hier sollte im Code das Blatt auf das sich Range beziehen soll mit angegeben werden, um die Kopfzeileninformationen korrekt ausgelesen werden.
Die Ansicht (Seitenlayout, Normal, Umbruchvorschau) und auch eingestellte Druckbereiche spielen keine Rolle - zumindest in der von mir verwendeten Version Excel 2010. Die Kopf/Fußzeilen werden korrekt aktualisiert.
Gruß
Franz
Angepasster Code. Wenn die Kopfzeileninformationen jeweils aus dem Tabellenblatt ausgelesen werden sollen, dessen Kopfzeile angepasst werden soll, dann kannst du
Set wsData = ...
weglassen und vor .Range(...) durch ws ersetzen.
Sub Kopf_und_Fusszeile_setzen()
'Auf jedem Tabellenblatt wird die Fusszeile gesetzt
Dim ws As Worksheet, wsData As Worksheet
Application.ScreenUpdating = False
Set wsData = Worksheets("Tabelle1") 'Tabellenblatt mit den Kopfzeilen-Informationen
For Each ws In ActiveWorkbook.Worksheets
Select Case ws.Name
Case "Tabelle4", "Tabelle5"
'in diesen Tabellenblättern Kopfzeilen nicht formatieren
Case Else
With ws.PageSetup
.LeftHeader = "&""Arial,Standard""&12" & "Projekt: " _
& wsData.Range("D5").Value _
& vbLf & "Anlagenbez.: " & wsData.Range("D6").Value _
& vbLf & "Gerätebauart: " & wsData.Range("D7").Value
.CenterHeader = "&""Arial,Standard""&12" & vbLf & vbLf & "ID:" _
& wsData.Range("J7").Value
.RightHeader = "&""Arial,Standard""&12" & "Kom.-NR.: " & wsData.Range("Q5").Value _
& vbLf & "Sachbearbeiter: " & wsData.Range("Q6").Value _
& vbLf & "Zeichn.-NR.: " & wsData.Range("Q7").Value
End With
End Select
Next ws
Application.ScreenUpdating = True
End Sub