Ich habe dem Weihnachtsmann geschrieben, was ich mir wünsche. Ich bin jetzt blockiert.

Hallo Rene,

Ich muss auf einem Excel Formblatt eine Kopfzeile als Tabelle formatieren. Siehe nachfolgende Screenshots aus dem Word und Excel. In der Kopfzeile von Word funktioniert die Tabellen Formatierung super.

Word:

In Excel nicht:

Hast du eine Idee, wie ich die Tabellenformatierung in die Kopfzeile von Excel bekomme? Ich habe die Excel auch angehängt.

Ich würde mich sehr über deine Hilfe freuen.

Mit freundlichen Grüßen / Best Regards

Matthias

Hallo Mattias,

schön, wieder von dir zu hören.

Zu deiner Frage: du kommst in Excel schnell an die Grenzen beim Formatieren: es gibt keinen Zeilenabstand, kein hängender Einzug, keine Aufzählungszeichen, kein Buchstabenabstand.

Und auch keine Möglichkeit die Kopfzeile ordentlich zu formatieren. Für senkrechte Linien habe ich keine Lösung.

Allerdings: mach doch einen Screenshot von deinem Kopf und füge den in die Kopfzeile ein.

Und in Excel:

Sie: „Schatz – mach mir ein Kompliment!“ – Er: Du hast einen fantastischen Mann!“

Hallo Herr Martin,

ich möchte Sie nochmals belästigen, auch auf die Gefahr hin, dass ich wieder zu doof bin, um es selbst zu finden!

Ich möchte auf dem Excel-Arbeitsblatt in der Kopfzeile das Datum der Erstellung oder zuletzt geändert /  zuletzt gedruckt einfügen, wie ich es aus Word kenne. (SAVEDATE / PRINTDATE) Ich habe in den Funktionen nur das „Aktuelle“ Datum gefunden. Selber etwas konstruieren kann ich als bloße Userin leider nicht. Können Sie helfen? Vielen Dank schon mal!

Hallo Frau H.,

das geht leider nicht.

In der Kopfzeile fehlen einige Dinge:

* Verknüpfung mit Inhalt einer Zelle

* Formeln

* weitere Feldfunktionen

Mit einem Makro kann man das lösen – wird aber auch umständlich: „woher hole ich die Information „zuletzt gedruckt“.

Sicherlich keine zufrieden stellende Antwort: ich würde das Datum per Hand in die Kopfzeile schreiben. Oder vielleicht über den Blattnamen, den man ja in der Kopfzeile anzeigen lassen kann.

Liebe Grüße
Rene Martin

Danke für die schnelle Antwort!

Wenigstens liegt es diesmal nicht an mir!!!

Alles Gute aus Düsseldorf!

Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Da falle ich in die Fritöse.

Kennst du Anrufe, die beginnen mit einem „hast du mal einen Moment Zeit?“ oder: „störe ich gerade?“

Richtig: Angelika rief am Wochenende an. Meine Kollegin Angelika. Sie bereitet gerade einen Excel-Makro-Kurs vor und suchte einige gute Gedanken für Befehle, die man mit dem Makrorekorder aufzeichnen könne. Dabei stieß sie auf die benutzerdefinierte Kopfzeile.

„Sag mal“, fragte sie, „wenn ich in der Kopfzeile aufzeichne: Seitennummerierung, Datum, Dateiname und Tabellenblattname passiert etwas ganz Komisches.“

Zuerst glaubte ich es nicht. Also – auch aufgezeichnet:

Ich lasse das Makro laufen:

Das Ergebnis verblüfft:

Und noch einmal:

Und wieder:

Und wieder. Und wieder. Und wieder ….

Ich schaue im Code nach:

[...]
    With ActiveSheet.PageSetup
        .LeftHeader = "&P / &N"
        .CenterHeader = "&D / &T"
        .RightHeader = "&Z&F / &A"

Eigentlich alles okay. Ich habe keine Ahnung, was hier passiert!

Ich rate Angelika, im Makrokurs nur den Firmennamen als Text aufzuzeichnen. Das klappt!

Okay – für Datum und Uhrzeit stehen die VBA-Befehle Date und Time zur Verfügung; für den Dateiname ActiveWorkbook.Name (oder Fullname), für den Blattnamen ActiveSheet.Name, aber für die Seitennummer? Ich weiß keine Lösung.

Danke an Angelika Meyer für diesen Hinweis!

Und nur wenig nach der Veröffentlichung des Artikels erreicht mich ein Kommentar von Ernst. Großartig – DAS ist des Rätsels Lösung! Hier sein Kommentar:

Hallo Rene,

dieses eigenartige Verhalten tritt bei mir (Excel 2019) nur dann auf, wenn vor dem Festlegen der PageSetup-Eigenschaften die Application.PrintCommunication-Eigenschaft auf False gesetzt wird. Wenn die Kommunikation mit dem Drucker nicht abgeschaltet wird, tritt dieses Verhalten nicht auf.

Bei der Makroaufzeichnung werden die Befehle
Application.PrintCommunication = False und Application.PrintCommunication = True
verwendet.

Bei Microsoft steht wohl folgender Hinweis:

Legen Sie die PrintCommunication-Eigenschaft auf False fest, um die Ausführung von Code zu beschleunigen, mit dem PageSetup-Eigenschaften festgelegt werden.

Legen Sie die PrintCommunication-Eigenschaft nach dem Festlegen der Eigenschaften auf True fest, um alle im Cache vorhandenen PageSetup-Befehle auszuführen.

Scheinbar klappt dies nicht richtig.

Salü

Ernst

Ich habe keine Schokoladenseite. Ich sehe von allen Seiten aus wie Vanillepudding.

Sicherlich hätte ich sehr, sehr lange gesucht. Und mich gewundert. Zum Glück hat mir Tanja Kuhn geholfen. Beziehungsweise mich schon vorher aufmerksam gemacht.

Die Aufgabe: in einem Wordformular soll dynamisch, das heißt per VBA, die Kopfzeile (und auch die Fußzeile) ausgetauscht werden:

Ich beginne mit dem Löschen der Kopfzeile.

ActiveDocument.Sections(i).Headers(wdHeaderFooterFirstPage).Range.Delete

Obwohl weder das Dokument noch einer der Abschnitte geschützt ist, erhalte ich eine Fehlermeldung:

Die Antwort: das Bild befindet sich in einem Inhaltssteuerelement und das wurde im Entwurfsmodus in den Eigenschaften geschützt. Folglich kann auch nicht die Kopfzeile gelöscht werden …

Böse! Ganz böse!

Wer schon mal einen Kaugummi aus seinen Kleidern entfernen musste, hat eine ungefähre Vorstellung davon wie ist, wenn ich aufstehe.

Wie gemein! Eine Kopfzeile in einem Tabellenblatt in Excel:

Ich fülle diese Kopfzeile in Excel mit VBA:

Dim strTitle As String
Dim strLocation As String
Dim strTarget As String
Dim strType As String

' -- die Variablen werden gefüllt:
strTitle = "Renes Titel"
strLocation = "Renes Ort"
strTarget = "Renes Ziel"
strType = "Renes Typ"

With ActiveSheet.PageSetup
' -- schreibe nur rein, falls der Text noch nicht drinsteht.
    If InStr(1, .LeftHeader, "Title" & strTitle) = 0 Then
        .LeftHeader = Replace(.LeftHeader, "Title", "Title " & strTitle)
    End If
    If InStr(1, .LeftHeader, "Location" & strLocation) = 0 Then
        .LeftHeader = Replace(.LeftHeader, "Location", "Location " & strLocation)
    End If
    If InStr(1, .LeftHeader, "Target group" & strTarget) = 0 Then
        .LeftHeader = Replace(.LeftHeader, "Target group", "Target group " & strTarget)
    End If
    If InStr(1, .LeftHeader, "Document type" & strType) = 0 Then
        .LeftHeader = Replace(.LeftHeader, "Document type", "Document type " & strType)
    End If
End With

Klappt:

Ich fülle sie ein zweites Mal. Klappt. Ein drittes Mal. Fehler:

Die LeftHeader-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden.

Hä?

Ich „schaue nach“, was in der Kopfzeile steht:

MsgBox ActiveSheet.PageSetup.LeftHeader

Stimmt – ich erinnere mich – die Formatierungsanweisungen stehen vor den Texten. Abgesehen davon, dass ich nicht mehrfach die Texte in die Kopfzeile schreiben darf, muss ich die Kopfzeile anders erzeugen:

ActiveSheet.PageSetup.LeftHeader = _
„&““Arial,Fett““&12“ & „Title “ & strTitle & Chr(10) & _
„&10“ & „Document type “ & strType & Chr(10) & _
„Target group “ & strTarget & Chr(10) & _
„Location “ & strLocation

Und DAS klappt:

Böse, böse, böse! Böses Excel!

Ich erinnere mich – ich habe vor einigen Jahren schon einmal über diese merkwürdigen Kopf- und Fußzeilen geschrieben:

Zwischen Reden und Tun liegt das Meer

Ärgerlich: viele Dinge kann man auf mehreren Blättern gleichzeitig erledigen, wenn man mehrere Blätter mit [Strg9- oder [Shift]-Taste markiert (also den Gruppenmodus aktiviert): Zellen formatieren, beschriften, Formeln einfügen, Spalten verbreitern, die Seite einrichten. Leider nicht einen Blattschutz auf alle selektierten Blätter anwenden. Und: Folgende Sache geht leider auch nicht:

Man kann zwar auf allen Blättern in Kopf- oder Fußzeile ein Bild einfügen. Ändern man jedoch die Bildgröße, wird sie nur auf einem Blatt geändert. Schade!

I ¤ non ASCII-characters

Letzte Woche in der Excel-VBA-Schulung. Um die Objekte näher zu bringen, beginne ich mit mit dem Makrorekorder. Wir zeichnen eine Reihe Befehle auf. Beispielsweise:

Füge in die Kopfzeile ein Bild ein:

ActiveSheet.PageSetup.RightHeaderPicture.Filename = _
„F:\Eigene Bilder\Bali\PIC00020.jpg“
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = „“
.PrintTitleColumns = „“
End With
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = „“
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = „“
.CenterHeader = „“
.RightHeader = „&G“
.LeftFooter = „“
.CenterFooter = „“
.RightFooter = „“
[…]

Das Ergebnis:

Wir löschen das Bild und führen das Makro erneut aus. Das Ergebnis: nichts! Ein Blick in den Dialog „Seite einrichten“ zeigt jedoch, dass etwas in der Kopfzeile ist. Ein Bild?

Der Grund ist schnell gefunden: Die Zeile:

Application.PrintCommunication = False

„Gibt an, ob die Kommunikation mit dem Drucker aktiviert ist.“ Deshalb wird zwar das Bild eingefügt aber nicht angezeigt. Also: Zeile löschen – und schon funktioniert es. Manchmal (oft!?!) liefert der Makrorekorder eben doch nicht den besten Code …

Übrigens: auf der Microsoft-Seite findet sich folgende Erklärung:

„Legen Sie die PrintCommunication-Eigenschaft auf False fest, um die Ausführung von Code zu beschleunigen, der PageSetup-Eigenschaften festlegt. Legen Sie die PrintCommunication-Eigenschaft auf True fest, nachdem Sie Eigenschaften zum Ausführen eines Commits aller zwischengespeicherten PageSetup-Befehle festgelegt haben.“

Aha!

 

Wer den Kopf in den Sand steckt, knirscht danach mit den Zähnen.

Sehr geehrter Herr Martin,

ich habe ein Problem mit Excel und bin bei meiner Internetrecherce auf ihre Seite gestoßen. Sie gefällt mir sehr gut.

Da ich leider keine Info zu meinem Fehler gefunden habe hoffe ich das Sie mir weiterhelfen können.

Hier mein Fehler:

Wenn ich in der Kopf- oder Fußzeile eine Zahl als erstes Zeichen einsetze macht mir Excel automatisch ein Leerzeichen davor. Wenn ich einen Buchstaben als erste Zeichen habe dann wird nichts eingefügt. Ich habe keine Ahnung warum und wie man diesen Automatismus deaktiviert.

Unter Seitenlayout/Seite einrichten ändert sich auch nichts.

Ich hoffe Sie haben eine Lösung

Die Eingabe

Die Eingabe

Und plötzlich ein Leerzeichen

Und plötzlich ein Leerzeichen vor dem 1. Quartal

Hallo Frau H.,

was bekomme ich für die Antwort? *lach*

Im Ernst:

  1. DAS habe noch nie gesehen. Ich grenze Ihr Problem ein. Ich trage in Kopfzeile einen Text ein, der mit einer Nummer beginnt. Klappt.
    Ich ändere die Schriftgröße. Padautz – Sie haben das Leerzeichen.
  1. Ich füge in die Datei (in Visual Basic) ein Makro ein, das mir den Inhalt der Kopfzeile ausliest (was steht denn da wirklich drin):

Sub Kopfzeile()

MsgBox ActiveSheet.PageSetup.LeftHeader

End Sub

Es liefert:

„&“ITC Quay Sans Book,Standard“1. Quartal

GWEGH“

  1. Ich lerne: Die Schriftart und -größe ist Teil der Kopfzeile und keine eigene Eigenschaft. Sie wird mit „&“+Schriftgröße vor den Text gesetzt. So wie Seitennummer und Dateiname auch mit & + Info codiert wird. Aus irgend einem Grund kollidiert nun & + Zahl. Keine Ahnung warum.
  1. Ich probiere ein bisschen – wenn Sie ein „&“ gefolgt von einem Leerzeichen vor Ihren Text eintragen, übergeht Excel diesen Fehler.

PS: DIESER Bug in Excel hat mich wirklich sehr irritiert. DARÜBER bin ich nämlich noch nie gestolpert.

Bild geht nicht weg

Das ist nicht komisch, was der Kollege da gemacht hat. Ich arbeite seit einer Weile in einer Excel-Datei – erst beim Drucken entdecke ich, dass ein Bild mit der Tabelle ausgedruckt wird. Ich sehe es aber nicht. Wenn ich es über Start / Bearbeiten / Suchen und Auswählen / Gehe zu / Inhalte / Objekte suche – dann findet er auch kein Bild. Was kann ich nur tun?

Ein Bild wird mit der Datei gedruckt.

Ein Bild wird mit der Datei gedruckt.

Es ist aber nicht sichtbar noch auffindbar.

Es ist aber nicht sichtbar noch auffindbar.

Die Antwort: Wechseln Sie in die Seitenlayout-Ansicht (Ansicht / Arbeitsmappenansichten / Seitenlayout). Dort sehen Sie das Bild (auch wenn Sie es dort so nicht finden können). Wechseln Sie in die Kopfzeile (oder Fußzeile). Sie sehen dort den Text „&[Grafik]“. Wenn Sie ihn markieren können Sie das Bild löschen.

In der Layoutansicht sieht man das Bild

In der Layoutansicht sieht man das Bild

In der Layoutansicht kann man das Bild löschen.

In der Layoutansicht kann man das Bild löschen.