Excel:Fußzeile Diagramm,Tabellen gleichzeitig

Hallo Zusammen.
Ich möchte allen ausgewählten Blättern, Diagramme und Tabellenblätter eine einheitliche Fußzeile per VBA verpassen.
Diagramme und Tabellenblätter werden ja in VBA unterschiedlich angesprochen.
Wie kann ich das in einem Rutsch machen?
Oder muß ich erst alle Diagramme und dann alle Tabellen verarbeiten?
Jetzt schon mal besten Dank für die Lösungsvorschläge.
Gruß
Georg

Hallo Georg,

als Objekte des aktiven Fensters kann man selektierte Diagramme und Tabellen gemeinsam ansprechen.

Code kann dann etwa so aussehen:

Sub KopfFusszeileneintragen()
' Für die einzeln oder als Gruppierung ausgewählten Diagramme und Tabellen werden
' Kopf- und Fußzeilen-Texte eingetragen.
' Die Variablen &D, &U, &N, &B, &S und &A für Datum, Uhrzeit, Datei-, Blattname
' und Seitennummerierung gelten für die deutschsprachige Version und möglicherweise
' nur unter EXCEL 97
' Makro am 08.09.05 von FCS erstellt
'
 Dim Sheet As Object
 Tabelle = ActiveSheet.Name
 KopfzeileLinks = InputBox("Text Kopfzeile links:", "Kopf-/Fußzeile", "Projektname")
 FußzeileLinks = InputBox("Text Fußzeile links:", "Kopf-/Fußzeile", "Firma, Ersteller")
 For Each Sheet In ActiveWindow.SelectedSheets
 With Sheet.PageSetup
 .LeftHeader = KopfzeileLinks
 .CenterHeader = "&D &U" ' Datum Uhrzeit
 .RightHeader = "&N, &B" ' Dateiname, Blattname
 .LeftFooter = FußzeileLinks
 .CenterFooter = ""
 .RightFooter = "Seite &S von &A"
 End With
 Next Sheet
 Sheets(Tabelle).Select
End Sub

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

DANKE!!
Hallo Franz,
das ist ja toll!
Genau so hab ich mir das vorgestellt.
Vielen Dank für die schnelle Antwort.
Gruß
Georg

Hallo, Georg!

Ergänzend zu Franz: Wenn Du über die Sheets-Auflistung gehst, hast Du Diagramme und Tabellen gemeinsam. Du musst die betreffenden Sheets nicht markieren, um die Routine durchlaufen zu lassen. Ist also relevant für eine Iteration über alle Sheets.

Sub KopfUndFusszeile(pstrKopfLi as string, pstrKopfMi as string, pstrKopfRe as string, \_
pstrFussLi as string, pstrFussMi as string, pstrFussRe as string)
 Dim sSheet as sheet
 for each sSheet in sheets
 With sSheet.PageSetup
 .LeftHeader = pstrKopfLi
 .CenterHeader = pstrKopfMi
 .RightHeader = pstrKopfRe
 .LeftFooter = pstrFussLi
 .CenterFooter = pstrFussMi 
 .RightFooter = pstrFussRe
 End With
 next
end sub

Gruß, Manfred

Hallo Manfred,
besten Dank für die Ergänzung.
Auf die Art kann man sich das Markieren der Blätter sparen.

Ich hab aber noch eine kurze Frage:
vielleicht ist dir hier ein kleiner Fehler unterlaufen oder ich verstehe das nicht wirklich

 Dim sSheet as sheet

bei mir erzeugt das einen Fehler beim kompilieren, ohne geht es.
Das ist aber nicht so wichtig, ich wollte nur mal wissen ob ich da was nicht kapiere.
noch mal vielen Dank

Gruß
Georg

Hallo, Georg!

Ich hab aber noch eine kurze Frage:
vielleicht ist dir hier ein kleiner Fehler unterlaufen oder
ich verstehe das nicht wirklich

Nö, scheint ein Fehler zu sein. Verstehen muss ich das zwar nicht, dass es eine Sheets-Auflistung gibt, aber kein Objekt Sheet. Mein Verständnis von Objektorientierung reicht da einfach nicht weit genug. Ich hätte die Sheets-Auflistung nicht als Konglomerat von Chart- und Worksheet-Objekten implementiert, sondern als Sammlung von Sheets, die der gemeinsame Obertyp von Chart und Worksheet sind. Aber nun gut…

Ersetze „As Sheet“ durch „As Object“, und das Ding läuft durch.

Wenn es ohne die Dim-Zeile durchläuft, hast Du kein Option Explicit im Modul (und unter Extras-Optionen-Editor „Variablendeklaration erforderlich“ wohl nicht angekreuzt). Das solltest Du ändern, denn lieber bei der Entwicklung Compilerfehler wegen nicht deklarierten Variablen oder falschen Datentypen bekommen als im Programmlauf Fehler, die aufgrund von Tippfehlern bzw. nicht kompatiblen Datentypen herrühren. Nur als allgemeine Info…

Aber danke für den Hinweis mit dem Compilerfehler. Bringt mich übrigens dazu: Wann ist der Compiler hier im Forum integriert? :wink:

Gruß, Manfred