27 Aufrufe
Gefragt in Tabellenkalkulation von peters Einsteiger_in (86 Punkte)
Hallo zusammen,

ich würde gerne im Fußzeilenbereich Zellwerte ausdrucken.

Ist das möglich und wenn ja, wie?

LG
Peter

3 Antworten

+1 Punkt
Beantwortet von m-o Profi (15.6k Punkte)

Hallo Peter,

ich nehme mal nicht an, dass du die Werte per Hand einfügen willst.

Das kannst du mit einem Makro machen. Hier mal ein kleines Beispiel:

Sub kopf()

With ActiveSheet.PageSetup
  'Kopfzeile
  .RightHeader = Range("A1").Value      'rechts
  .CenterHeader = Range("A2").Value     'mitte
  .LeftHeader = Range("A3").Value        'links
   'Fußzeile
  .RightFooter = Range("B1").Value
  .CenterFooter = Range("B2").Value
  .LeftFooter = Range("B3").Value
 End With

End Sub

Willst du die Werte z.B. vor dem Drucken in Kopf und / oder Fußzeile schreiben, so kannst du das wie folgt machen:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

With ActiveSheet.PageSetup
  'Kopfzeile
  .RightHeader = Range("A1").Value      'rechts
  .CenterHeader = Range("A2").Value     'mitte
  .LeftHeader = Range("A3").Value        'links
   'Fußzeile
  .RightFooter = Range("B1").Value
  .CenterFooter = Range("B2").Value
  .LeftFooter = Range("B3").Value
 End With

End Sub


Dieser Code gehört in das VBA-Projekt der betreffenden Arbeitsmappe.

Gruß

M.O.

0 Punkte
Beantwortet von peters Einsteiger_in (86 Punkte)
Hallo MO,

danke für die Idee und die Anleitung!
Stimmt, ich wollte die Zellbezüge nicht von Hand eintragen - das hätte ich gerade noch geschafft  ;-)

Zwei sich ergebende Anschlussfragen:

- Wenn ich den Code in das VBA-Projekt einer Tabelle schreibe, beschränke ich das ja auf dieses eine Blatt, richtig? (soll so sein)
- Habe ich die Möglichkeit, die Schriftformatierung noch zu beinflussen, wie es in der Kopf-/Fußzeile erscheint?

LG

Peter
0 Punkte
Beantwortet von m-o Profi (15.6k Punkte)

Hallo Peter,

Wenn ich den Code in das VBA-Projekt einer Tabelle schreibe, beschränke ich das ja auf dieses eine Blatt, richtig? (soll so sein)

Nicht unbedingt, das kommt auf deinen Code an. Hast du den Code in dem VBA-Projekt des Tabellenblatts in einem entsprechenden Worksheet-Ereignis (z.B. Worksheet_SelectionChange) dann stimmt das. Hast du aber einen allgemeinen Code, dann kannst du den Code von jedem Tabellenblatt ausführen.

Probiere mal das folgende aus: Erstelle eine neue Tabelle mit 2 Arbeitsblättern. Schreibe in die Zelle A1 jeweils Tabelle1 bzw. Tabelle 2. Füge den folgenden Code in das VBA-Projekt des Arbeitsblatts 1 ein:

Sub test()
MsgBox ActiveSheet.Range("A1").Value
End Sub

Gehe dann auf das Arbeitsblatt2 und führe den Code aus.

Wenn du willst, dass der Code nur in einem bestimmten Arbeitsblatt ausgeführt wird, dann kannst du z.B. am Anfang des Code prüfen, ob das Arbeitsblatt aktiv ist. Ich würde aber im Code das Arbeitsblatt ansprechen:

Sub test()
With Worksheets("Tabelle1")
   MsgBox .Range("A1").Value
  .Range("A2") = "Hallo"
End With
End Sub

Zu deiner 2. Frange: Natürlich kannst du den Text auch noch formatieren.

Schau dir mal das hier an: Format- und VBA-Codes für Kopf- und Fußzeilen

Beispiel:

Sub kopf()

With ActiveSheet.PageSetup
  'Kopfzeile
  .RightHeader = "&B " & Range("A1").Value    'rechts; Fett
  .CenterHeader = "&""Arial""&8" & Range("A2").Value 'mitte in Arial 8
  .LeftHeader = "&""Arial""&25&B&I" & Range("A3").Value        'links, Arial 25, Fett, Kursiv
   'Fußzeile
  .RightFooter = Range("B1").Value
  .CenterFooter = Range("B2").Value
  .LeftFooter = Range("B3").Value
 End With

End Sub

Gruß

M.O.

...